swift - Swift 如何将闭包从一个函数传递到另一个函数?
问题描述
假设我有 2 个功能:
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 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)")
})
}
推荐阅读
- javascript - 巧克力js从链接attr href打开图像
- reactjs - 从帖子中删除评论:评论不会删除或错误的评论被删除,commentId undefined
- ansible - ansible jinja2 - if elseif - 使用相同的行
- typescript - 将reduce与map和array一起使用
- python - 在 django 模板中显示 PIL 图像对象
- react-native - 无法验证自定义博览会客户的身份
- javascript - 如果值为 false,则删除变量
- swift - 如何使用 xmlcoder 解码 xml?
- angular - Rxjs 观察者过滤器不工作错误
- apache-spark - 如何在pyspark的循环中合并数据帧