swift 2.0中的闭包声明

时间:2015-09-06 13:41:50

标签: ios swift swift2

在swift 2.0中,正确的闭包声明是什么?我已经看过如下所示的例子,但它似乎对我不起作用。

SomeClass

var successBlock: (Bool) -> () = { _ in }

它会像这样调用:

self.successBlock(true)

然后在SomeOtherClass

let someClass = SomeClass
someClass.successBlock {
    success in
    //code here

}

这会给我一个错误:(_) -> is not convertible to Bool

我试过谷歌搜索一下但没有运气...... 使用swift 2.0是否有语法更改,还是我?

1 个答案:

答案 0 :(得分:2)

如果您尝试设置 successBlock,则应使用=符号进行

someClass.successBlock = { success in
    // code here
}

编辑:你提到你只希望你的其他班级听#34;但是"听"意思?如果你想在每次调用闭包时调用某个值并根据它做一些事情,你可能想要一个闭包数组:

var successBlocks : [Bool -> Void] = []

你可以像这样调用:

let value = true
successBlocks.forEach{ $0(value) }

当您想要收听调用时,您可以这样做:

someClass.successBlocks.append( { success in
    // do the stuff
} )

它不会覆盖数组中已有的任何其他闭包,所以可能是你想要做的。