在我的函数Swift 3中放置completionHandler的位置
我一直在努力学习Swift中的完成处理程序,但似乎找不到我问题的答案。如果我有多个完成处理程序,它们是否必须位于专用位置?例如,我可以拥有以下代码:在我的函数Swift 3中放置completionHandler的位置,swift,completionhandler,Swift,Completionhandler,我一直在努力学习Swift中的完成处理程序,但似乎找不到我问题的答案。如果我有多个完成处理程序,它们是否必须位于专用位置?例如,我可以拥有以下代码: func example(x:Int, completionHandler: @escaping (_ success: Bool) -> ()){ if x > 5 { completionHandler(true) } completionHandler(false) } 或者我必须将completi
func example(x:Int, completionHandler: @escaping (_ success: Bool) -> ()){
if x > 5 {
completionHandler(true)
}
completionHandler(false)
}
或者我必须将completionHandler(false)
括在else语句中(例如,完成处理程序必须彼此排他)?如果是这样的话,有人能解释一下上述情况会如何发展吗?在函数中的所有代码完成执行后,我将完成处理程序理解为“返回值”。那么上面的场景会有两个不同的“返回值”吗
另外,如果我没有包含第二个completionHandler,并且x=4
,会发生什么?这将如何影响调用此函数的代码
提前谢谢你 如您所见,如果将
6
作为第一个参数传递,则将执行两次:
在操场上试试。我会试试的。我没有意识到我可以这样做,因为我需要完成处理程序的代码使用的是Firebase!忘了我可以使这个例子哑口无言……如果你去掉了行
completionHandler(false)
,并且你传递了x=4
,函数将永远不会命中第一个完成处理程序。然后呢?我试过了,旁边的(2次)
显示为灰色。这是否意味着它只是不执行闭包?@kbunarjo如果您将4
传递为x,则在if条件块中得到错误结果,而不会进入if体。因此,不要紧,if body块中的内容,您的第一个方法参数将小于或等于5。@kbunarjo在if
block之后,您将继续从该方法向前移动。如果删除第二个完成处理程序,您只需从此方法返回,因为您的完成处理程序以前从未调用过。