Re[2]: [Scala] Использование yield в больших проектах
От: avpavlov  
Дата: 24.02.09 19:17
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Здравствуйте, avpavlov, Вы писали:

A>>Как тут быть — запретить использование "йелда"? Или договорится помечать методы, генерирующие что-нибудь с помощью "йелда" специальным префиксом/постфиксом, вроде yieldSomething()? Советы вроде "ты обязан думать головой, чтобы не прострелить себе ногу" на большом проекте не проканают
T>Итератьр — это не список, так же как и список это не массив.
T>Так что просто работай с этим так же как с любым другим типом данных, имеющим свои ограничения и достоинства.

К сожалению (хотя в большинстве случаев к счастью) одна из фич Скала это вывод типов, т.е. код который я привёл выглядит абсолютно одинаково как для итератора, так и для списка. Т.е. программисту нужно или помнить (а его знание может устареть после чьего-нибудь рефакторинга) или постоянно проверять имплементацию метода.

Опять же в Яве итератор можно использовать только один раз, потом ему надо ресет делать, а Скала сама его передёргивает.

Вообщем, я считаю что неплохо было бы иметь ворнинг от комплилятора на повторное использование "йелдового" итератора, а текущая имплементация ведёт к трудноуловивым ошибкам практически на ровном месте.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.