Verwenden Sie `self` als Standardparameter
Kann ich benutzenself
als Standardparameter in Swift? Dieser Code fühlt sich ziemlich einfach an, aber ich verstehe die Meldung, die der Compiler zurückwirft, nicht:
func printTree(node: TreeNode = self, tabs: String = "") {
println(tabs + node.name!)
node.children.forEach { printTree(node: $0, tabs: tabs+"\t") }
}
Error
'TreeNode -> () -> TreeNode' is not convertible to 'TreeNode'
Huh?
Es gibt wahrscheinlich andere Möglichkeiten, wie ich die Baumüberquerung lösen könnte, aber ich bin eigentlich nur neugierig auf die Standardparametereinschränkung. Ist das eine echte Sache? Gibt es eine Erwähnung in den Dokumenten? Ich konnte keinen finden.
Aktualisieren
Ich tat dies von Grund auf ohne Abhängigkeiten (ich hatte eine Klassenerbschaft und eine benutzerdefinierteforEach
affepatch vorher beteiligt). Es treten immer noch Fehler auf:
class PeanutButterJelly {
var children: [PeanutButterJelly]?
func doDance(){ println("dancing") }
func everybodyDanceNow(pbj: PeanutButterJelly = self) {
pbj.doDance()
if let children = pbj.children {
for child in children { child.doDance() }
}
}
}
Error
Swift compilation error: unresolved identifier 'self'
Xcode 6.3.2