我正在通过一个非常方便且色彩鲜艳的网站here处理其中一个示例,具体来说:
func applyMutliplication(value: Int, multFunction: Int -> Int) -> Int {
return multFunction(value)
}
applyMutliplication(2, {value in
value * 3
})
请注意,调用applyMultiplication()时给出的闭包不指定返回类型。我不希望这个例子有效,但确实如此;结果是" 6"使用上面的例子。我原本以为空值将被"返回"。或者Swift总是返回一些东西,除非你明确地返回null?
如果我修改该闭包以指定返回类型,那么它将继续以与预期相同的方式工作
let result = applyMultiplication(2, {value -> Int in
value * 3
})
答案 0 :(得分:0)
我不希望这个例子有效但是确实
在许多情况下,Swift通常可以infer types变量和表达式。在这种情况下,Swift会查看您返回的值,并可以推断出类型。
如果我修改该闭包以指定返回类型,那么它将继续工作
明确指定类型并不会更改返回的类型,因此行为没有变化。
或者Swift总是会返回一些东西
即使void
函数返回某事 - 它也会返回一个空元组。正如评论中指出的那样,single expression closures implicitly return表达的价值。