Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Foreach для Enumeration 
:(
    Опции темы
Karadul
Дата 13.6.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



foreach не работает?
PM MAIL   Вверх
Skipy
Дата 14.6.2012, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: нет
Всего: 16



Цитата(Karadul @ 13.6.2012,  18:52)
foreach не работает?

Для Enumeration? Ну проверьте.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
priam220
Дата 14.6.2012, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



foreach тут как бы не нужен, почитать почему можно здесь
вкратце:
Цитата

Only major difference between Enumeration and iterator is Iterator has a remove() method while Enumeration doesn't. Enumeration acts as Read-only interface, because it has the methods only to traverse and fetch the objects, where as by using Iterator we can manipulate the objects like adding and removing the objects


PM MAIL   Вверх
Karadul
Дата 14.6.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Если я правильно помню, foreach требует Iterable, а не Iterator.
PM MAIL   Вверх
priam220
Дата 14.6.2012, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



Все правильно помните, осталось только глянуть что из себя представляет Iterable.
PM MAIL   Вверх
Karadul
Дата 14.6.2012, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Но можно же кидать исключение на remove(), для кого foreach придумали-то?
PM MAIL   Вверх
priam220
Дата 14.6.2012, 15:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



Почти уверен, что и такой подход оскорбил бы Вас не менее: что за хрень! в жава есть классы, имеющие паблик методы remove! но на попытку удалить там что то оно мне ругается!  ай-ай! какие они там все балбесы, спросили бы у меня, я б им сказал как надо!
 smile 


PM MAIL   Вверх
jk1
Дата 14.6.2012, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 75



Цитата

что за хрень!


Не такая уж и хрень. Если вспомнить доки на java.util.Iterator, то там операция remove() заявлена как optional, то есть она может не быть реализована и кидать UnsupportedOperationException:

Цитата

void remove()

Removes from the underlying collection the last element returned by the iterator (optional operation). This method can be called only once per call to next. The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.

Throws:
UnsupportedOperationException - if the remove operation is not supported by this Iterator.


Так что реализация Enumeration'ом интерфейса Iterable контракта не нарушает.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
priam220
Дата 14.6.2012, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



Вынужден признать свою неправоту и принести свои извинения товарищам по цеху, за безосновательный пафос! И принять этот красивый подсрачник в награду. 
Тогда действительно, наблюдается избыточность, наверное Enumeration, существующий с 1.0 будет умирать.
А все казалось таким красивым.
PM MAIL   Вверх
Pawl
Дата 14.6.2012, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: нет
Всего: 28



Цитата(priam220 @  14.6.2012,  17:26 Найти цитируемый пост)
Тогда действительно, наблюдается избыточность

А как сделать лучше напишете?


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
AntonSaburov
Дата 14.6.2012, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 118



А может попробовать самому поискать ответ ?
PM MAIL WWW ICQ   Вверх
priam220
Дата 14.6.2012, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: нет
Всего: 8



Цитата(Pawl @  14.6.2012,  18:49 Найти цитируемый пост)
А как сделать лучше напишете?

1. Думаю, лучше было бы сделать что то однозначное.  
2. Я думаю, многие согласятся, что провайдить интерфейс, которого не должно быть согласно логической концепции объекта (например велосипеду метод startEngine() ) не совсем верно. Т.е. применительно к нашему вопросу UnmodifiableCollection<E> implements Collection<E> выглядит не совсем красиво, имхо. 
3. Лучше - сложный оценочный фактор. У меня нет причин не доверять разработчикам системы, - возможно маленькие нестыковки в объектной модели языка, с лишком окупаются другими профитами. 
  


Это сообщение отредактировал(а) priam220 - 16.6.2012, 23:58
PM MAIL   Вверх
Karadul
Дата 14.6.2012, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Ситуация, когда прошло 7 с лишним лет, а некоторым авторам нинужен foreach, говорит о, как бы сказать, их отсталости. В питоне, например, вообще нет сишного for, только foreach.
PM MAIL   Вверх
jk1
Дата 15.6.2012, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 75



Karadul, а в чем собственно проблема?

Можно же делать вот так:
Код

while (nets.hasMoreElements()) {
      NetworkInterface net =  nets.nextElement();


Функционально будет полным эквивалентом foreach. Что же до синтаксического сахара, то пора бы понять, что в Java его практически нет. Если он для Вас так важен, то берите Scala и забудьте про Java как про страшный сон.

Я уже молчу о том, что Enumeration встречается достаточно редко, можно годами писать код на Java и не знать о нем.

Цитата

В питоне, например, вообще нет сишного for, только foreach. 


что порождает костыли в случае, когда нужно вызвать функцию четко определенное число раз или перебрать последовательные числа:
Код

for _ in xrange(n): foo()


На этом дискуссию предлагаю закрыть, так как она давно ушла в оффтоп.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Karadul
Дата 15.6.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата(jk1 @  15.6.2012,  09:31 Найти цитируемый пост)
Цитата

В питоне, например, вообще нет сишного for, только foreach. 


что порождает костыли в случае, когда нужно вызвать функцию четко определенное число раз или перебрать последовательные числа:

Это не такие страшные костыли, а foreach используется в питоне гораздо чаще for.

Просто поражает упоротость (некоторых) жавоидов, 7-8 лет прошло, а им foreach, видите ли, нинужен. А другие их еще защищают. 

Если мосье считает, что оффтоп, предлагаю посты, начиная с оффтопа, перенести в другую тему. На сырцах вообще был раздел "религиозные войны".
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.