在Swift闭包中省略返回类型

在Swift闭包中省略返回类型,swift,Swift,我正在使用一个非常方便且名称丰富的站点上的示例,具体如下: func applyMutliplication(value: Int, multFunction: Int -> Int) -> Int { return multFunction(value) } applyMutliplication(2, {value in value * 3 }) 请注意,调用applyMultiplication()时给出的闭包没有指定返回类型。我不希望这个例子奏效,但它确实奏效了;

我正在使用一个非常方便且名称丰富的站点上的示例,具体如下:

func applyMutliplication(value: Int, multFunction: Int -> Int) -> Int {
  return multFunction(value)
}

applyMutliplication(2, {value in
  value * 3
})
请注意,调用applyMultiplication()时给出的闭包没有指定返回类型。我不希望这个例子奏效,但它确实奏效了;使用上面的示例,结果是“6”。我本以为会“返回”一个空值。或者,除非显式返回null,否则Swift是否总是返回某些内容

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

let result = applyMultiplication(2, {value -> Int in 
  value * 3
})
我不希望这个例子奏效,但它确实奏效了

在许多情况下,Swift通常可以修改变量和表达式的类型。在本例中,Swift查看您返回的值,并可以推断类型

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

显式指定类型不会更改返回的类型,因此行为没有变化

还是斯威夫特总是会回报什么


即使是
void
函数也会返回一些东西——它返回一个空元组。正如评论中所指出的,它们的表达式的值。

官方文档指出,单行闭包将自动返回该行的结果。请参阅中的“单表达式闭包的隐式返回”一节。如果您可以澄清“显式指定类型不会更改返回的类型,因此没有”-不,什么?然后我接受你的答案。抱歉--我只是想说,当你声明返回类型时,示例继续工作并不奇怪。你告诉编译器的是它自己决定的事情。