如何使用Swift对象方法作为闭包?

时间:2015-11-30 20:53:39

标签: swift closures

我想使用对象方法作为闭包,因为我需要在对象的不同位置多次重复使用相同的闭包。让我们说我有以下内容:

class A {
    func launch(code: Int) -> Bool { return false }
}

我需要在同一个对象中使用类型为Int -> Bool的闭包。我怎样才能使用launch方法作为闭包?如果我可以直接引用该方法,我宁愿不做{ self.launch($0) }之类的事情。

1 个答案:

答案 0 :(得分:1)

Instance methods are curried functions以实例为例 作为第一个论点。因此

class A {
    func launch(code: Int) -> Bool { return false }

    func foo() {
        let cl = A.launch(self) 
        // Alternatively:
        let cl = self.dynamicType.launch(self)

        // ...
    }
}

为您提供Int -> Bool类型的闭包。