Swift'de varsayılan parametreyi self
kullanabilir miyim? Bu kod oldukça yalındır hissediyor ama derleyici geri tekmeliyor mesajı anlamıyorum:`self`'i varsayılan parametre olarak kullan
func printTree(node: TreeNode = self, tabs: String = "") {
println(tabs + node.name!)
node.children.forEach { printTree(node: $0, tabs: tabs+"\t") }
}
Hata:
'TreeNode ->() -> TreeNode' is not convertible to 'TreeNode'
Huh?
Ağaç geçişini çözmemde başka yollar da olabilir, ancak aslında varsayılan parametre kısıtlamasını merak ediyorum. Bu gerçek bir şey mi? Dokümanlarda bundan bahsediliyor mu? Ben bir tane bulamadım.
Güncelleme:
hiçbir bağımlılıkları ile sıfırdan yaptılar (Bir sınıf hiyerarşi vardı ve özel bir forEach
maymun yama önce dahil). Hala hatalar:
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() }
}
}
}
Hata:
Swift compilation error: unresolved identifier 'self'
Xcode 6.3.2
örn : soruyu önleyen bir çözüm: 'func printTree (sekmeler: String =" ") { println (sekmeler +" \ (isim) ") çocuklar? .forEach {$ 0.printTree (sekmeler: sekmeler +" \ t ")} } ' – SimplGy
Hata, _implementation_ ile ilgili olmalıdır,' self' kullanılarak bir varsayılan parametre olarak t o derleyici. – akashivskyy