- 1
Ranges.closedOpen(0, list.size()).asSet(DiscreteDomains.integers())
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+114
Ranges.closedOpen(0, list.size()).asSet(DiscreteDomains.integers())
Самый простой известный мне способ сделать аналог питоновского range(len(list)). Даже с Guava.
Dummy00001 18.09.2013 23:50 # 0
anonimb84a2f6fd141 19.09.2013 01:09 # 0
Dummy00001 19.09.2013 01:11 # 0
и даже iterator. если на самом деле хочется по целым числам итерировать, то эмулировать надо xrange().
anonimb84a2f6fd141 19.09.2013 03:25 # 0
Ну а я о чем.
На самом деле, на последней ветке фитона range() возвращает итератор.
Dummy00001 19.09.2013 03:27 # 0
хорошо сказал. почти нофелет, но про программирование.
someone 19.09.2013 11:06 # 0
И да, в Жабе есть и сишный фор, и форыч, так что потенциальная область применения range/xrange гораздо уже. Но она таки есть.
roman-kashitsyn 19.09.2013 11:18 # +1
someone 19.09.2013 11:24 # 0
Отвечает Александр Друзь Джошуа Блох:
http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html
To keep the number of core collection interfaces manageable, the Java platform doesn't provide separate interfaces for each variant of each collection type. (Such variants might include immutable, fixed-size, and append-only.)
В общем, чтобы не плодить стопицот разных интерфейсов. Есть один интерфейс, а реализации кидают UnsupportedOperationException, где надо.
roman-kashitsyn 19.09.2013 11:39 # +1
Dummy00001 19.09.2013 12:53 # +1
Всегда за это жабщину не любил. Вместо того что бы просто сказать "сорри облажались" они начинают городить поводы что бы сделать вид что оно так и задумывалось.
roman-kashitsyn 19.09.2013 13:18 # +2
Что ещё ждать от человека, который рекомендует читать Design Patterns
wvxvw 19.09.2013 14:35 # 0
А навстречу ему Страуструп, и говорит такой: Джошуа, а я вот считаю, что лучше когда сложности реализации язык перекладывает на свои плечи со щупленких плечей программиста, вон посмотри тока, какой мы СТЛ отгрохали? А?
Dummy00001 19.09.2013 16:17 # +1
Страуструп может СТЛ и одобрил, но авторство не его. Если я правильно помню он как раз и хотел темплейты/этс поменять потому считал что на них сложно что либо сделать. Но потом тот Степанов ( http://en.wikipedia.org/wiki/Alexander_Stepanov ) выплыл и показал что на темплейтах таки можно что-то сделать. После этого просто и порешили ничего больше не менять. Другими словами: если не гений как Степанов, то лучше не трогай СТЛ/темплейты.
roman-kashitsyn 19.09.2013 16:27 # +1
В частности, шаблоны, принимающие на вход шаблоны, появились из-за потребности в аллокаторах (придуманных, между прочим, не Степановым - их навязал комитет).
Пруфы можно найти в и Design and Evolution of C++
Dummy00001 19.09.2013 16:38 # 0
Может и спелись. Основная цель Страуструпа была стандартная библиотека с хорошим набором утилит. Степанов ее предоставил. Страуструп просто не хотел повторения истории С, где в общем случае все всё сами пилили на коленке. Но и опускатся до Смолтока он тоже не хотел, где все что "нужно" уже включено (со всеми вытекающими: цена, портабельность, кто-то за других решает что "нужно" а что нет, и т.д.).
Вообщем, всем просто крупно не повезло что именно эти два товарища случайно пересеклись в жизни.
roman-kashitsyn 19.09.2013 16:46 # +1
Dummy00001 19.09.2013 17:11 # 0
с другой стороны то что реализуется, весьма примитивно и банально.
другими словами. коэфициэнт "полезность деленая на избыточность" слегка зашкаливает в нету сторону.
defecate-plusplus 19.09.2013 17:16 # +1
без stl каждый первый бы до сих пор изобретал std::string, std::vector, std::map, std::cout...
Dummy00001 19.09.2013 18:08 # +4
defecate-plusplus 19.09.2013 18:20 # +4
Всего: 52
C++: 25
C: 17
Java: 3
Куча: 5
Perl: 1
bash: 1
шах и мат!
Dummy00001 19.09.2013 18:28 # 0
Так что, unшах!! и unмат!! ;)
ЗЫ профессионально, я 50%/50% - С/С++. официально то, согласно начальству, у нас на фирме вообще ничего на перле не написано. (за исключением: {длиный список внутренних тулзов опущен}.)
bormand 19.09.2013 18:29 # +2
Ну не видит человек говна в пёрле, раз он перловщик со стажем. Зато в крестах, си и жабе видит ;)
roman-kashitsyn 19.09.2013 21:00 # 0
правильно, это не говно - это гольф
bormand 19.09.2013 21:09 # +1
Раз уж речь зашла о пёрле. Сегодня на работе подпиливал пёрловый скрипт, и, стёба ради, на практике поюзал "оператор" goatse (http://search.cpan.org/dist/perlsecret/lib/perlsecret.pod#Goatse__=%28_%29=). Он оказался довольно удобным:
roman-kashitsyn 19.09.2013 16:29 # 0
Dummy00001 19.09.2013 16:38 # 0
ЗЫ А про что вообще книжка?
roman-kashitsyn 19.09.2013 16:49 # +2
да всякий матан про типы, концепты и метапрограммирование
wvxvw 19.09.2013 16:43 # 0
Dummy00001 19.09.2013 12:40 # +1
ну я как бы и спрашивал: зачем тебе этот список, например?
я кроме тестов каких, нигде ничего подобного ни разу еще и не писал.
guest 30.09.2013 23:25 # 0