【问题标题】:Passing closure to another closure将闭包传递给另一个闭包
【发布时间】:2016-07-07 09:48:17
【问题描述】:

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

swift中的闭包和objective中的block有什么区别吗?

【问题讨论】:

标签: ios swift


【解决方案1】:

如何将闭包传递给闭包?

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

例如

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中的闭包和objective中的block有什么区别吗?

关于您的第二个问题,请参阅以下问答

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多