是否可以强制关闭完成?与返回值必须始终返回的函数一样,如果有一种方法可以强制闭包含有总是完成所需的语法,那么它就是王牌. 例如,此代码将无法编译,因为该函数并不总是返回值
例如,此代码将无法编译,因为该函数并不总是返回值:
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有关?
不,如果您忘记(或不需要)在所有可能的条件(如return语句)下调用完成处理程序,则不会导致编译器错误的语言构造.这是一个有趣的想法,可能会对语言进行有用的增强.也许作为参数声明中某处的必需关键字.