如何在Swift中使用函数类型参数定义函数

时间:2014-12-04 08:23:40

标签: swift

我可以定义一个像这样的函数

func doWithAction(action: ()-> void) {
    // something
}

然而,当我使用该函数时,Xcode的自动完成给了我一个块/闭包

self.addPullToRefreshControllerWithAction { () -> void in

}

我知道闭包和函数在Swift中是相同的,但我想引导使用此函数的人传递函数,而不是块。我之所以这样做是因为我希望这个函数的行为类似于选择器和委托

1 个答案:

答案 0 :(得分:1)

是的,闭包和函数在swift中实际上是相同的,所以如果函数需要一个闭包,你可以传递一个与参数签名相同的函数。像这样

func iAmAFunc(() -> Void) -> Void {
    //do stuff
}

func funcThatTakesVoidAndReturnsVoid() -> Void {
    //do stuff
}

var closureThatTakesVoidAndReturnsVoid: () -> Void = { }

iAmAFunc(funcThatTakesVoidAndReturnsVoid)
iAmAFunc(closureThatTakesVoidAndReturnsVoid)