考虑以下一组功能:
func testFunc(someFunc: (Int[]) -> ()) {
someFunc([1, 2, 3])
}
func someFunc<T>(arr : T[]) -> T[] {
return arr
}
func someOtherFunc<T>(arr : T[]) {
println(arr)
}
// case 1 - ERROR
testFunc() {
someFunc($0)
}
// case 2 - no error
testFunc() {
println("whatever")
someFunc($0)
}
// case 3 - no error
testFunc() {
someOtherFunc($0)
}
Run Code Online (Sandbox Code Playgroud)
看起来在情况1中,Swift试图从闭包中隐式返回,因为函数someFunc()返回一个值.只有在闭包中只有一行(单表达式闭包的隐式返回)时才会这样做 - 这就是案例2有效的原因.如果函数(如情况3所示)Void,即它不返回值,则不会执行此操作.
我的问题是是否有一种方法来抑制这种行为,以便我可以在没有返回值的闭包中将一个带有返回值的函数作为单行表达式.
swift ×1