请参见下文。我知道变量闭包可以在任何对象中调用,因此self不能在闭包的上下文中定义。在实例关闭变量中使用自我
但是可以定义一些Fn使我可以使用“自我”?
class A {
var value:Int = 3
var someFn:emptyFn = {
// does not compile, self is not set
print (self)
}
}
A().someFn()
请参见下文。我知道变量闭包可以在任何对象中调用,因此self不能在闭包的上下文中定义。在实例关闭变量中使用自我
但是可以定义一些Fn使我可以使用“自我”?
class A {
var value:Int = 3
var someFn:emptyFn = {
// does not compile, self is not set
print (self)
}
}
A().someFn()
的问题是,你的A
实例的初始化之前使用self
。
所以还没有self
呢。
如果您将创建FO您关闭了init
内,将工作
class A {
var value:Int = 3
var someFn :() ->() = { }
init() {
someFn = { print(self) }
}
}
A().someFn() // A
我需要填充
someFn
与声明中的空值,以便能够使用self
内init
。在所有没有默认值的属性都被初始化之前,Infactself
不能用于(在init
之内)。
谢谢!这现在有很大的意义 –
@mingyeow:不客气:) –
任何想法,为什么我可能得到downvote btw? :/ –
亲爱的用户谁downvote - 是什么原因? –