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