将闭包传递给另一个闭合

时间:2016-07-07 09:48:17

标签: ios swift

我是快速编程开发的新手。我想知道如何将闭包传递给另一个闭包。

swift中的闭包和目标中的块之间是否有任何区别。

1 个答案:

答案 0 :(得分:2)

如何将闭包传递给闭包?

闭包可以看作任何其他(非闭包)类型。这意味着您可以构造一个闭包,其中闭包的参数描述了另一种闭包类型。

E.g。

let sendMeAClosure: ((Int) -> String) -> () = {
    print($0(42)) /* ^^^^^^^^^^^^^^^- argument of sendMeAClosure
                                      is a closure itself        */
}

let myClosure: (Int) -> String = {
    return "The answer is \($0)."
}

sendMeAClosure(myClosure) // The answer is 42

请注意,Swift中的函数只是一种特殊类型的闭包,因此您也可以提供一个函数引用(它具有与参数类型匹配的签名)到上面的sendMeAClosure

/* sendMeAClosure as above */

func myFunc(arg: Int) -> String {
    return "The answer is \(arg)."
}

sendMeAClosure(myFunc) // The answer is 42

swift中的闭包和目标中的块之间有什么区别吗?

关于第二个问题,请参阅以下Q& A