Implementando gerador recursivo para estrutura de árvore simples no Swift
Eu tenho uma estrutura de árvore simples na memória com base em um documento XML e estou tentando escrever um gerador recursivo para dar suporteSequenceType
, mas estou preso em como realmente fazer isso.
Aqui foi minha primeira tentativa:
@objc public class XMLNode: NSObject, SequenceType {
public weak var parentNode: XMLNode?
public var nodeName: String
public var attributes: [String: String]
public var childNodes = [XMLNode]()
public func generate() -> AnyGenerator<XMLNode> {
var childGenerator = childNodes.generate()
var returnedSelf = false
return anyGenerator {
let child = childGenerator.next()
if child != nil {
// I need to somehow recurse on child here
return child
} else if !returnedSelf {
returnedSelf = true
return self
} else {
return nil
}
}
}
}
Desde achildNodes
é uma matriz, estou chamando de seu própriogenerate()
para criar um gerador nos nós filhos e iterá-lo e, em seguida, retornarself
no fim. O problema é que ele não se repete em cada criança, por isso só chega a um nível de profundidade. Não consigo descobrir como combinar dois geradores dessa maneira.
Estou tendo dificuldade para entender como fazer isso! O que preciso fazer para criar um gerador recursivo?