如何将函数作为函数swift的参数传递?

时间:2017-06-03 18:38:51

标签: swift function parameters closures

希望将函数作为参数(如onCompletion)传递,该函数将作为Swift中函数调用的一部分进行调用(类似于javascript闭包)。这里最好的做法是什么?

代码:

func didFinishFunc(onCompletion: func) {
    func()
}

func onCompletionFunc()
{
    print("completed.")
}

func caller()
{
   didFinishFunc(onCompletion: onCompletionFunc)
}

// caller is called
caller()

2 个答案:

答案 0 :(得分:3)

您可以像这样定义您的功能。

func didFinishFunc(onCompletion: () -> Void) {
    // your function implementation here

    onCompletion()
}

此函数将一个闭包(有时称为其他语言的回调或匿名函数)作为参数。这个闭包没有参数也没有返回值。

如果你想让闭包有参数你可以这样做:

func didFinishFunc(onCompletion: (String, Int) -> Void) {
    // your function implementation here

    onCompletion("foo", 5)
}

此功能包含StringInt两个参数。

如果您希望闭包具有返回类型,请在Void之后更改类型(在->之上)。

答案 1 :(得分:1)

使用Swift闭包。例如。

func didFinishFunc(onCompletion handler: () -> Void) {
    handler()
}

请参阅The Swift Programming Language: Closures