Как Генераторы, Элемент которых является Необязательным, знают, когда они достигли конца?
СвифтGeneratorType ссылка говорит оnext
метод:
next()
Перейдите к следующему элементу и верните его, либо nil, если следующего элемента не существует.
А потом в обсуждении говорится
Требуется:next()
не был применен к копииself
так как копия была сделана, и нет предыдущего вызоваself.next()
вернулсяnil
, Конкретные реализации этого протокола рекомендуется реагировать на нарушения этого требования, вызываяpreconditionFailure("...")
.
Если Генератор предназначен для Необязательного типа, он может достичьnil
значение до достижения конца последовательности. Откуда Свифт знает, что в этом случае он еще не достиг конца?