![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
foreach не работает?
|
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: нет Всего: 16 |
Для Enumeration? Ну проверьте. |
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: нет Всего: 8 |
foreach тут как бы не нужен, почитать почему можно здесь.
вкратце:
|
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Если я правильно помню, foreach требует Iterable, а не Iterator.
|
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: нет Всего: 8 |
Все правильно помните, осталось только глянуть что из себя представляет Iterable.
|
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Но можно же кидать исключение на remove(), для кого foreach придумали-то?
|
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: нет Всего: 8 |
Почти уверен, что и такой подход оскорбил бы Вас не менее: что за хрень! в жава есть классы, имеющие паблик методы remove! но на попытку удалить там что то оно мне ругается! ай-ай! какие они там все балбесы, спросили бы у меня, я б им сказал как надо!
![]() |
|||
|
||||
jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: нет Всего: 75 |
Не такая уж и хрень. Если вспомнить доки на java.util.Iterator, то там операция remove() заявлена как optional, то есть она может не быть реализована и кидать UnsupportedOperationException:
Так что реализация Enumeration'ом интерфейса Iterable контракта не нарушает. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: нет Всего: 8 |
Вынужден признать свою неправоту и принести свои извинения товарищам по цеху, за безосновательный пафос! И принять этот красивый подсрачник в награду.
Тогда действительно, наблюдается избыточность, наверное Enumeration, существующий с 1.0 будет умирать. А все казалось таким красивым. |
|||
|
||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: нет Всего: 28 |
А как сделать лучше напишете? -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
А может попробовать самому поискать ответ ?
|
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: нет Всего: 8 |
1. Думаю, лучше было бы сделать что то однозначное. 2. Я думаю, многие согласятся, что провайдить интерфейс, которого не должно быть согласно логической концепции объекта (например велосипеду метод startEngine() ) не совсем верно. Т.е. применительно к нашему вопросу UnmodifiableCollection<E> implements Collection<E> выглядит не совсем красиво, имхо. 3. Лучше - сложный оценочный фактор. У меня нет причин не доверять разработчикам системы, - возможно маленькие нестыковки в объектной модели языка, с лишком окупаются другими профитами. Это сообщение отредактировал(а) priam220 - 16.6.2012, 23:58 |
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Ситуация, когда прошло 7 с лишним лет, а некоторым авторам нинужен foreach, говорит о, как бы сказать, их отсталости. В питоне, например, вообще нет сишного for, только foreach.
|
|||
|
||||
jk1 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: нет Всего: 75 |
Karadul, а в чем собственно проблема?
Можно же делать вот так:
Функционально будет полным эквивалентом foreach. Что же до синтаксического сахара, то пора бы понять, что в Java его практически нет. Если он для Вас так важен, то берите Scala и забудьте про Java как про страшный сон. Я уже молчу о том, что Enumeration встречается достаточно редко, можно годами писать код на Java и не знать о нем.
что порождает костыли в случае, когда нужно вызвать функцию четко определенное число раз или перебрать последовательные числа:
На этом дискуссию предлагаю закрыть, так как она давно ушла в оффтоп. -------------------- Opinions are like assholes — everybody has one |
||||||
|
|||||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Это не такие страшные костыли, а foreach используется в питоне гораздо чаще for. Просто поражает упоротость (некоторых) жавоидов, 7-8 лет прошло, а им foreach, видите ли, нинужен. А другие их еще защищают. Если мосье считает, что оффтоп, предлагаю посты, начиная с оффтопа, перенести в другую тему. На сырцах вообще был раздел "религиозные войны". |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: нет Всего: 46 |
||||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Я бы назвал тему "Почему в яве так не любят foreach и все, что младше 10 лет".
И все-таки жалко, что у вас холиворов нету. |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
А это что? Но вообще джавовский foreach весьма убог, в CL loop (и iter из пакета iterate) намного круче. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
О, действительно.
А что такое CL? Убог/не убог, но уже лучше, чем ничего, меньше можно напортить (ошибки при копипасте вложенных циклов, когда забывают исправить переменную), не говоря о том, что foreach не требует индексации. Ну и выглядит лучше, чем ручной вызов итератора. |
|||
|
||||
k0rvin |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Common Lisp
вот только такую фишку с его помощью не сделать:
Впрочем в CL loop этого тоже не сделать, но в C++, думаю, можно что-такое сотворить. Добавлено через 9 минут и 18 секунд И вот такую штуку не сделаешь:
а в CL loop сделаешь =) -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||||
|
|||||||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: нет Всего: 28 |
зато в java можно извратиться ![]()
Это сообщение отредактировал(а) Pawl - 15.6.2012, 22:51 -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Фу. Вы небось теми же руками потом на форуме пишете? Это map чтоли? Библиотекой наверняка можно, а встроенных средств ФП в яве нет. Не, фп в питоне очень приятное и не слишком тошнотное. Линку не юзал, но тоже с виду неплох + параллелизация искаропки. |
|||
|
||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Это мне любитель джавы говорит? ![]()
Нет, не map.
А при чем тут ФП? -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
Karadul |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Ну любитель - не любитель, но пользуюсь. А какое лисп имеет отношение к яве в частности и к промышленной разработке вообще? Он за пределами университетов кому-то нужен? А что? Уж очень похоже
Там не вложенные for. |
||||||
|
|||||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Common Lisp - вполне себе прямое. http://www.lispworks.com/success-stories/index.html http://www.franz.com/success/ Но ты отвлекаешься. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Зачем ты пропустил
? =) Но это конечно изврат. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
Karadul |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
От чего? Мы о ФП говорили? Так а что из себя представляют примеры, если не map+reduce? Добавлено @ 15:05
Это типа как много на нем написано? А на яве этот список тебе браузер завесит ![]()
Вот уж действительно изврат - из-за одного значения foreach вызывать и потом останавливать, так еще и с O(n**2). На govnokod.ru надо запостить. Это сообщение отредактировал(а) Karadul - 18.6.2012, 15:11 |
||||||
|
|||||||
k0rvin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
От циклов foreach.
Простые циклы.
Это типа его используют в "энтерпрайзе", а мерятся количеством как-то не солидно. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||||
|
|||||||
Karadul |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
И чего в них не хватает?
Параллельной итерации по двум последовательностям? В питоне это решается так
Т.е. берется функция zip, которая возвращает выполнят на каждой последовательности next() и возвращает кортеж со значениями, потом этот кортеж распаковывается в x,y. Скорость такой операции жавоёидов может не устроить. А как часто такое бывает надо? Ну в принципе можно бы было и сделать, но с консервативностью явы вряд ли, мож в дотнете бы появилось.
Это уже какая-то полунизкоуровневая хрень. Для таких целей лучше подходит map или уже сишный for цикл. Итерация через foreach с возможностью изменения элемента не всегда возможно, т.к. итерация может идти через последовательности, которые изменить нельзя в принципе (например, поток байтов из сокета или файла, открытого для чтения). Хотя для массивов, возможно бы, и пригодилась. В сисярпе есть ref, может там что-то работает. А вообще работа с итераторами хорошо получается через ФП. Может, в сисярпе linq решает часть этих проблем.
А яву где? А количеством людей, пишущих на нем, солиднее? Это сообщение отредактировал(а) Karadul - 18.6.2012, 17:39 |
||||||||
|
|||||||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Модератор: Сообщение скрыто. |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Тему закрываю - она уже ушла непонятно куда.
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Возобновляем в разделе холиваров.
|
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Угу, вот так и получается, что прожорливость софта идет в ногу с повышением производительности железа. Где-то на stackoverflow вроде уже было сравнение производительности C#/.NET foreach и for. Не в пользу foreach. Добавлено через 2 минуты и 8 секунд
Ты спрашивал, использутеся ли CL где-то за пределами университетов (кстати, там он как раз не используется), я тебе ответил с примерами. Никаким количеством не солидней. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
Karadul |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: нет Всего: 1 |
Батхертнутые модерашки мне бан на три недели выписали. Когда им уже руки поотпиливают.
Понятия не имею, зачем я это написал. Наверно, как пример, как это можно сделать. В принципе, можно конечно же сделать foreach и с несколькими переменными, заодно решив, что делать с последовательностями разной длины. Но почему-то этого не сделали. |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |