- 1
- 2
- 3
PHP supports eight primitive types - four scalar types, two compound types and finally three special types.
8 == 4+2+3?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+48
PHP supports eight primitive types - four scalar types, two compound types and finally three special types.
8 == 4+2+3?
http://www.php.net/manual/en/language.types.intro.php
3.14159265 09.10.2012 16:34 # +1
Может быть array примитивный тип, а вот object - нет. Но всё-равно тупо.
Короче какой язык, такая и документация.
scriptin 09.10.2012 23:16 # −2
Объекты однозначно не примитивы, поэтому без них получается 8. Но лично я бы не стал относить ресурсы к примитивам.
Вероятно, принцип разделения - by-val/by-ref. Объекты по ссылке передаются (PHP 5.3):
Но тогда что же получается - ресурсы по значению передаются?
govnomonad 10.10.2012 04:14 # +1
govnomonad 10.10.2012 04:31 # +5
LispGovno 10.10.2012 07:49 # +1
>еблю
Ясно.
3.14159265 10.10.2012 13:03 # 0
На самом деле сравнить в жабе 2 произвольных объекта - дико сложное занятие
bormand 10.10.2012 13:30 # 0
Как и в жизни сравнивать ежа со слоном.
3.14159265 10.10.2012 15:55 # +1
int[] a={1,2,3};
int[] b={1,2,3};
Человек обжегшийся на == и уже знающий про equals сочтет логичным написать:
a.equals(b)
bormand 10.10.2012 05:50 # +7
Зато из-за перегрузки операторов и имплисит преобразований и конструкторов не всегда знаешь куда передаешь ;)
LispGovno 10.10.2012 07:50 # 0
Что ты имеешь ввиду?
LispGovno 10.10.2012 07:53 # +3
Nemoden 10.10.2012 09:17 # +2
не надо
> и обращать внимание на всякие iclonable
не надо
> в плюсах с этим проблем нет - всегда знаешь что передаешь
нет
roman-kashitsyn 10.10.2012 12:11 # +5
Толи дело хацкель - никаких проблем с by-value/by-reference.
P.S. В жабе то как раз всё очень просто: все объекты - по ссылкам, все примитивы (т.е. числа) - по значению.
bormand 10.10.2012 13:38 # 0
Пока в дело не вступают всякие там IORef'ы с MVar'ами.
roman-kashitsyn 10.10.2012 13:47 # 0
Правда, они в основном нужны в многопоточном коде
3.14159265 10.10.2012 12:52 # +2
В жабе проще чем где-либо - всё передается по value. Даже примитивы, даже ссылки, даже Аллах. Проблема в другом - запомнить и принять, что обертки простых типов иммутабельны. Из-за автобоксинга это может смущать.
>iclonable.
Clonable - говно, ибо так сказал Doug Lea. А Жжош Блох его поддержал.
>все объекты - по ссылкам
Роман, не надо тут путать.
Всё по значению. Просто ссылка на объект передается тоже по значению.
А это кстати любимый вопрос многих на собеседованиях.
roman-kashitsyn 10.10.2012 13:05 # 0
Но мы-то знаем, что это тупо указатели, и на самом деле (tm) всё передаётся по значению.
> Clonable - говно
ещё какое
3.14159265 10.10.2012 13:08 # 0
Doug Lea goes even further. He told me that he doesn't use clone anymore except to copy arrays. You should use clone to copy arrays, because that's generally the fastest way to do it. But Doug's types simply don't implement Cloneable anymore. He's given up on it. And I think that's not unreasonable.
It's a shame that Cloneable is broken, but it happens. The original Java APIs were done very quickly under a tight deadline to meet a closing market window. The original Java team did an incredible job, but not all of the APIs are perfect. Cloneable is a weak spot, and I think people should be aware of its limitations.
А все почему? У них видите ли дедлайн был - а люди годами мучаются.
roman-kashitsyn 10.10.2012 13:10 # +4
Правильно так:
almost all of the API are crap
TarasB 10.10.2012 13:09 # +6
Нелепая придирка к словам.
Если бы не собеседовании мне сказали, что я ответил неверное про "объекты по ссылкам" и что на самом деле "Всё по значению. Просто ссылка на объект передается тоже по значению", то я бы, конечно, не стал бы никого посылать нахуй, на всякий случай, но подумал бы, что собеседующий - тупой мудак, который воспринимает только строго те формулировки, которые написаны в книгах, и срезает семантически эквивалентные, но с другими словами. Знаете, бывают такие.
3.14159265 10.10.2012 13:11 # +1
Хе-хе-хе.
>что собеседующий - тупой мудак
А ты как думал. Но дело не придирках, а в том, что так проще запомнить - всё по значению.
bormand 10.10.2012 13:33 # +2
Ага, если это бездумно запомнить, то будет так:
3.14159265 10.10.2012 15:38 # 0
TarasB 10.10.2012 15:38 # +5
Потому что я каждый раз по адовой привычке пишу просто SomyType t, потом я спохватываюсь, вставляю этот const, и да ладно, хрен с ним, но меня бесит то, что мне надо втыкать знаки в текст в не одно место, а в два, и во второе место, точно прицелившись стрелочками курсора, я должен точно попасть и двумя руками (потому что одной не получается) колченогим движением набрать этот символ &, который не приспособлен для частого и удобного набора. Лучше бы они constref ввели, и то меньше гемора было бы, хотя бы один раз скопировал это слово в буфер обмена и вставляешь везде быстренько. Я уже заебался нажимать shift+7. С этим уёбищным крестоблядским & время правки одного-единственного места занимает минимум 5 секунд!!!
3.14159265 10.10.2012 15:41 # +3
TarasB 10.10.2012 15:44 # +3
Ох кресты вы мои кресты... Жизней сломанных пол-версты...
3.14159265 10.10.2012 16:01 # +2
Из-за этих эволюцонных причин и желания напихать туда побольше всякого, не особо разбираясь: "А надо ли?".
defecate-plusplus 10.10.2012 15:46 # +3
используй не const Type & t, а Type const & t
пиши изначально const & - это надо делать всего то в декларации аргументов функции
используй язык, где не надо так писать, а begin, end if, function, declare улучшают читабельность ДАЖВЕ ПРИ ОТСТУПЕ В ДЖВА ПРОБЕЛА!!11
TarasB 10.10.2012 16:03 # +2
Кстати там принято три пробела :3
bormand 10.10.2012 18:44 # 0
Чтобы неповадно было расставлять табы (потому что кто включит шестипробельный таб в редакторе)?
wvxvw 10.10.2012 19:49 # 0
eth0 10.10.2012 19:26 # +1
scriptin 10.10.2012 19:53 # −1
guest 21.01.2017 06:59 # 0