将 completionHandler 放在我的函数中的什么地方 Swift 3
Where to put the completionHandler in my function Swift 3
我一直在尝试了解 Swift 中的完成处理程序,但似乎找不到我的问题的答案。如果我有多个完成处理程序,它们是否必须位于独占位置?例如,我可以有代码吗:
func example(x:Int, completionHandler: @escaping (_ success: Bool) -> ()){
if x > 5 {
completionHandler(true)
}
completionHandler(false)
}
或者我是否必须将 completionHandler(false)
包含在 else 语句中(例如,完成处理程序是否必须彼此排斥)?如果是这样,有人可以解释上述情况将如何发生吗?在函数内的所有代码执行完毕后,我将完成处理程序理解为 "return values" 的方式。那么上面的场景会有2个不同的"return values"吗?
此外,如果我不包含第二个 completionHandler 和 x = 4
会怎样?这将如何影响调用此函数的代码?
提前致谢!
如您所见,如果您将 6
作为第一个参数传递,您的 closure 将执行两次:
- 当你在条件块中得到 true;
- 当闭包作为转义闭包被调用时。
例如,我写了一个 one-method class,它通过打印传递的参数作为结果来演示闭包的行为。
你可以看到下面的结果
我一直在尝试了解 Swift 中的完成处理程序,但似乎找不到我的问题的答案。如果我有多个完成处理程序,它们是否必须位于独占位置?例如,我可以有代码吗:
func example(x:Int, completionHandler: @escaping (_ success: Bool) -> ()){
if x > 5 {
completionHandler(true)
}
completionHandler(false)
}
或者我是否必须将 completionHandler(false)
包含在 else 语句中(例如,完成处理程序是否必须彼此排斥)?如果是这样,有人可以解释上述情况将如何发生吗?在函数内的所有代码执行完毕后,我将完成处理程序理解为 "return values" 的方式。那么上面的场景会有2个不同的"return values"吗?
此外,如果我不包含第二个 completionHandler 和 x = 4
会怎样?这将如何影响调用此函数的代码?
提前致谢!
如您所见,如果您将 6
作为第一个参数传递,您的 closure 将执行两次:
- 当你在条件块中得到 true;
- 当闭包作为转义闭包被调用时。
例如,我写了一个 one-method class,它通过打印传递的参数作为结果来演示闭包的行为。
你可以看到下面的结果