Como os Geradores cujo Elemento é Opcional sabem quando chegaram ao fim?
The SwiftGeneratorType referência diz sobre onext
método:
next()
Avance para o próximo elemento e retorne-o, ou nulo se não houver outro elemento.
E então na discussão, diz
Requer:next()
não foi aplicado a uma cópia doself
desde que a cópia foi feita e nenhuma chamada anterior paraself.next()
Voltounil
. As implementações específicas deste protocolo são encorajadas a responder a violações deste requisito chamandopreconditionFailure("...")
.
Se o gerador for para um tipo opcional, é possível que ele atinja umnil
antes de chegar ao final da sequência. Como Swift sabe que não chegou ao fim neste caso?