如何初始化闭包类型的let属性以指向某个方法的指针?

Ras*_*sto 5 closures initialization swift

看看下面的代码

class Example {
    let action: String -> ()

    init() {
        action = method //error: Variable self.action used before initialized
    }

    func method(s: String) {
        println(s)
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在将闭包类型的属性设置为类方法。要引用类方法,我需要初始化单个属性,但要正确初始化它,我需要引用该方法。我该如何跳出循环?

我知道我可以做类似的事情

init() {
    action = {_ in }
    action = method //error: Variable self.action used before initialized
}
Run Code Online (Sandbox Code Playgroud)

但这并不好。

我实际需要做的事情更复杂,也更有意义,但这就是本质。

Ant*_*nio 5

您可以将该属性声明为隐式解包可选:

let action: (String -> ())!
Run Code Online (Sandbox Code Playgroud)

这是隐式解包有用并且可以安全使用的少数情况之一。