有没有可能强制完成一个闭包?就像一个带有返回值的函数必须始终返回一样,如果有一种方法可以强制闭包包含必要的语法来始终完成,那将是很好的。
例如,这段代码无法编译,因为该函数并不总是返回一个值:
func isTheEarthFlat(withUserIQ userIQ: Int) -> Bool {
if userIQ > 10 {
return false
}
}
同样地,我想使用闭包定义一个函数,并且如果该闭包永远不返回,也不会编译。例如,下面的代码可能永远不会返回completionHandler:
func isTheEarthFlat(withUserIQ userIQ: Int, completionHandler: (Bool) -> Void) {
if userIQ > 10 {
completionHandler(false)
}
}
上面的代码已经编译通过,但我想知道是否有一个关键字可以强制要求在所有情况下闭包都发送一个完成处理程序。也许与上面函数中的Void
有关?
@noescape
的扩展,而现在已经被弃用),以及底层实现需要大量工作,所以被拒绝了。但希望这是一个将来版本语言中会出现的功能。 - Hamish