希望将函数作为参数(如onCompletion)传递,该函数将作为Swift中函数调用的一部分进行调用(类似于javascript闭包)。这里最好的做法是什么?
代码:
func didFinishFunc(onCompletion: func) {
func()
}
func onCompletionFunc()
{
print("completed.")
}
func caller()
{
didFinishFunc(onCompletion: onCompletionFunc)
}
// caller is called
caller()
答案 0 :(得分:3)
您可以像这样定义您的功能。
func didFinishFunc(onCompletion: () -> Void) {
// your function implementation here
onCompletion()
}
此函数将一个闭包(有时称为其他语言的回调或匿名函数)作为参数。这个闭包没有参数也没有返回值。
如果你想让闭包有参数你可以这样做:
func didFinishFunc(onCompletion: (String, Int) -> Void) {
// your function implementation here
onCompletion("foo", 5)
}
此功能包含String
和Int
两个参数。
如果您希望闭包具有返回类型,请在Void
之后更改类型(在->
之上)。
答案 1 :(得分:1)
使用Swift闭包。例如。
func didFinishFunc(onCompletion handler: () -> Void) {
handler()
}