见下文。我理解变量闭包可以在任何对象中调用,因此不能在此闭包的上下文中定义self。
但是有可能定义someFn以便我可以使用" self"?
class A {
var value:Int = 3
var someFn:emptyFn = {
// does not compile, self is not set
print (self)
}
}
A().someFn()
答案 0 :(得分:2)
问题是您在初始化self
实例之前使用A
。
所以还没有self
。
如果你在init
内移动你的闭包的创作,它将起作用
class A {
var value:Int = 3
var someFn : () -> () = { }
init() {
someFn = { print(self) }
}
}
A().someFn() // A
我需要在声明期间使用空值填充
someFn
,以便能够在self
内使用init
。在初始化所有没有默认值的属性之前,不能使用[{1}}(在self
内)。