Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Итераторы / Протокол итератора
Тест — Протокол итератора
Что возвращает pull-one, когда у итератора больше нет
значений, и как это проверить?
| 1 | IterationEnd, проверяется через =:= |
| 0 | Nil, проверяется через .defined |
| 0 | пустой список (), проверяется через == |
| 0 | 0, проверяется через =:= |
Исчерпанный итератор возвращает объект-маркер
IterationEnd. Поскольку это один общий объект, его
проверяют по тождественности через =:= (проверка «тот же
самый объект»), а не по значению и не по определённости. Цикл
for пользуется ровно этой проверкой, чтобы понять, когда
остановиться.