2016-07-28 15 views
0

请参见下文。我知道变量闭包可以在任何对象中调用,因此self不能在闭包的上下文中定义。在实例关闭变量中使用自我

但是可以定义一些Fn使我可以使用“自我”?

class A { 
    var value:Int = 3 
    var someFn:emptyFn = { 
    // does not compile, self is not set 
    print (self) 
    } 
} 

A().someFn() 
+1

亲爱的用户谁downvote - 是什么原因? –

回答

2

的问题是,你的A实例的初始化之前使用self

所以还没有self呢。

如果您将创建FO您关闭了init内,将工作

class A { 
    var value:Int = 3 
    var someFn :() ->() = { } 

    init() { 
     someFn = { print(self) } 
    } 
} 

A().someFn() // A 

我需要填充someFn与声明中的空值,以便能够使用selfinit。在所有没有默认值的属性都被初始化之前,Infact self不能用于(在init之内)。

+1

谢谢!这现在有很大的意义 –

+1

@mingyeow:不客气:) –

+0

任何想法,为什么我可能得到downvote btw? :/ –