我是快速编程开发的新手。我想知道如何将闭包传递给另一个闭包。
swift中的闭包和目标中的块之间是否有任何区别。
答案 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
关于第二个问题,请参阅以下Q& A