Implementación de generador recursivo para estructura de árbol simple en Swift
Tengo una estructura de árbol simple en la memoria basada en un documento XML y estoy tratando de escribir un generador recursivo para admitirSequenceType
, pero estoy atrapado en cómo hacer esto realmente.
Aquí fue mi primer intento:
@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
}
}
}
}
Ya quechildNodes
es una matriz, estoy llamando a su propio incorporadogenerate()
función para crear un generador en los nodos secundarios e iterarlo, y luego regresarself
al final. El problema es que no recurre a cada niño, por lo que solo llega un nivel de profundidad. No puedo entender cómo combinar dos generadores de esa manera.
¡Estoy teniendo dificultades para entender cómo hacer esto! ¿Qué necesito hacer para hacer un generador recursivo?