我可以定义一个像这样的函数
func doWithAction(action: ()-> void) {
// something
}
然而,当我使用该函数时,Xcode的自动完成给了我一个块/闭包
self.addPullToRefreshControllerWithAction { () -> void in
}
我知道闭包和函数在Swift中是相同的,但我想引导使用此函数的人传递函数,而不是块。我之所以这样做是因为我希望这个函数的行为类似于选择器和委托
答案 0 :(得分:1)
是的,闭包和函数在swift中实际上是相同的,所以如果函数需要一个闭包,你可以传递一个与参数签名相同的函数。像这样
func iAmAFunc(() -> Void) -> Void {
//do stuff
}
func funcThatTakesVoidAndReturnsVoid() -> Void {
//do stuff
}
var closureThatTakesVoidAndReturnsVoid: () -> Void = { }
iAmAFunc(funcThatTakesVoidAndReturnsVoid)
iAmAFunc(closureThatTakesVoidAndReturnsVoid)