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 2

Mas 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?)

questionAnswers(2)

yourAnswerToTheQuestion