Swift如何将闭包从一个函数传递到另一个函数?
假设我有两个功能:Swift如何将闭包从一个函数传递到另一个函数?,swift,closures,Swift,Closures,假设我有两个功能: functionA(@escaping closureA: ((Double) -> ())) { // Some Code for function A } functionB(@escaping closureB: ((Double) -> ())) { // Some Code for function B } 如果要从函数A调用函数B,如何将函数A的闭包参数作为参数传递给函数B的参数 看起来像这样的东西: func A(@escapin
functionA(@escaping closureA: ((Double) -> ())) {
// Some Code for function A
}
functionB(@escaping closureB: ((Double) -> ())) {
// Some Code for function B
}
如果要从函数A调用函数B,如何将函数A的闭包参数作为参数传递给函数B的参数
看起来像这样的东西:
func A(@escaping closureA: ((Double) -> ())) {
// Some Code for function A
B(<trying to pass closureA>)
}
func B(@escaping closureB: ((Double) -> ())) {
// Some Code for function B
}
func A(@escaping closureA:((双)->()){
//函数A的一些代码
B()
}
函数B(@escaping closureB:((双)->()){
//函数B的一些代码
}
试试下面的例子
func functionA(closure:(()->Void), completionHandler: @escaping (Double) -> Void) {
closure()
completionHandler(1.0)
}
func functionB(completionHandler: @escaping (Double) -> Void) {
completionHandler(2.0)
}
func nestedClosure() {
functionA(closure: {
functionB { (value) in
print("\(value)")
}
}, completionHandler: { (value) in
print("\(value)")
})
}
您需要将in参数转义到要开始的闭包,然后在调用发送到functionB的闭包时,需要提供一个值作为参数
func functionA(closureA: (@escaping (Double) -> ())) {
functionB(closureB: closureA)
}
func functionB( closureB: (@escaping (Double) -> ())) {
closureB(3.2)
}
范例
functionA(closureA: {print($0 * 2.0)})
6.4
谢谢!这个解决方案正是我想要的。欢迎兄弟。检查你的正确答案。