gpt4 book ai didi

swift - 在我的函数 Swift 3 中将 completionHandler 放在哪里

转载 作者:行者123 更新时间:2023-11-28 06:26:39 25 4
gpt4 key购买 nike

我一直在尝试了解 Swift 中的完成处理程序,但似乎无法找到我的问题的答案。如果我有多个完成处理程序,它们是否必须位于独占位置?例如,我可以有代码吗:

func example(x:Int, completionHandler: @escaping (_ success: Bool) -> ()){
if x > 5 {
completionHandler(true)
}
completionHandler(false)
}

或者我是否必须将 completionHandler(false) 包含在 else 语句中(例如,完成处理程序是否必须彼此排斥)?如果是这样,有人可以解释上述情况将如何发生吗?在函数内的所有代码执行完毕后,我将完成处理程序理解为“返回值”的方式。那么上述场景是否会有 2 个不同的“返回值”?

此外,如果我不包含第二个 completionHandler 和 x = 4 会发生什么情况?这将如何影响调用此函数的代码?

提前致谢!

最佳答案

如您所见,如果您将 6 作为第一个参数传递,您的 closure将执行两次:

  1. 当您在条件 block 中得到true时;
  2. 当闭包作为转义闭包被调用时。

例如,我编写了一个单方法类,它通过打印传递的参数作为结果来演示闭包的行为。

可以看到下面的结果

关于swift - 在我的函数 Swift 3 中将 completionHandler 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667896/

25 4 0