[英]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.