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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage