繁体   English   中英

Swift 2.0中的闭包声明

[英]Closure declaration in swift 2.0

在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的语法有变化吗?还是我吗?

如果尝试设置 successBlock ,则应使用=符号:

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

编辑:您提到您只希望您的其他班级“听”,但是“听”是什么意思? 如果您想每次使用某个值调用闭包并根据其执行某些操作时,都可能需要一个闭包数组:

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

您可以这样调用:

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

当您想监听调用时,可以执行以下操作:

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

它不会覆盖数组中已经存在的任何其他闭包,所以这可能就是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM