<分区>
递归对于 Swift 中的全局函数来说是微不足道的。例如:
func f()
{
f()
}
但是,闭包不能引用自身。例如:
var f: (Void -> Void) =
{
f()
}
产生以下错误:
Variable used within its own initial value
有解决办法吗?如何创建递归闭包内联?
<分区>
递归对于 Swift 中的全局函数来说是微不足道的。例如:
func f()
{
f()
}
但是,闭包不能引用自身。例如:
var f: (Void -> Void) =
{
f()
}
产生以下错误:
Variable used within its own initial value
有解决办法吗?如何创建递归闭包内联?
最佳答案
限制是两个对象不能同时实例化,不能互相引用。必须先创建一个。您可以将函数标记为隐式解包可选。这样您就可以使用 nil
初始化该函数,但“保证”它稍后会有一个值。
var f: (Void -> Void)!
f = {
f()
}
更新: 另一种没有隐式解包选项的方法:
var f: (Void -> Void)
var placeholder: (Void -> Void) = {
f()
}
f = placeholder
关于function - 如何在 Swift 中创建 _inline_ 递归闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523285/