Usando AnyGenerator com Swift 2.2+ (suporte de loop "for in" para classes personalizadas)
Anteriormente, eu estava usando a seguinte função para fazer minha classe personalizada estar em conformidade com o protocolo SequenceType:
func generate() -> AnyGenerator<UInt32> {
var nextIndex = 0
return anyGenerator {
if (nextIndex > self.scalarArray.count-1) {
return nil
}
return self.scalarArray[nextIndex++]
}
}
Esta é uma implementação semelhante às respostas aceitas para essas duas perguntas:
Adicione suporte "for in" para iterar sobre as classes personalizadas SwiftAdicione o suporte 'for ... in' a uma classe no Swift 2Mas depois de uma atualização do Swift 2.2 ...
'++' foi descontinuado: será removido no Swift 3
func generate() -> AnyGenerator<UInt32> {
var nextIndex = 0
return AnyGenerator {
if (nextIndex > self.scalarArray.count-1) {
return nil
}
nextIndex += 1
return self.scalarArray[nextIndex]
}
}
Mas isso gera um erro de Índice fora do intervalo, porque eu realmente preciso usar o índice pré-incrementado e depois incrementá-lo após o retorno.
Como isso funciona para o AnyGenerator agora no Swift? (Além disso, devo diminuir, em vez de incrementar, como as outras duas respostas às quais vinculei?)