Используйте `self` в качестве параметра по умолчанию
Могу ли я использоватьself
в качестве параметра по умолчанию в Swift? Этот код выглядит довольно простым, но я не понимаю сообщения, которое возвращает компилятор:
func printTree(node: TreeNode = self, tabs: String = "") {
println(tabs + node.name!)
node.children.forEach { printTree(node: $0, tabs: tabs+"\t") }
}
Ошибка:
'TreeNode -> () -> TreeNode' is not convertible to 'TreeNode'
А?
Возможно, есть и другие способы решения обхода дерева, но на самом деле мне просто любопытно ограничение по умолчанию для параметров. Это настоящая вещь? Есть ли упоминание об этом в документации? Я не мог найти один.
Обновить:
Я сделал это с нуля без каких-либо зависимостей (у меня был класс heirarchy и обычайforEach
патч обезьяны участвовал ранее). Это еще ошибки:
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() }
}
}
}
Ошибка:
Swift compilation error: unresolved identifier 'self'
Xcode 6.3.2