省略Swift闭包中的返回类型

时间:2015-06-22 02:36:21

标签: swift

我正在通过一个非常方便且色彩鲜艳的网站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
})

1 个答案:

答案 0 :(得分:0)

  

我不希望这个例子有效但是确实

在许多情况下,Swift通常可以infer types变量和表达式。在这种情况下,Swift会查看您返回的值,并可以推断出类型。

  

如果我修改该闭包以指定返回类型,那么它将继续工作

明确指定类型并不会更改返回的类型,因此行为没有变化。

  

或者Swift总是会返回一些东西

即使void函数返回某事 - 它也会返回一个空元组。正如评论中指出的那样,single expression closures implicitly return表达的价值。