我正在努力理解Swift中的返回值。 你能解释一下这些之间的区别吗?
func someFunc() -> Void {}
func someFunc() {}
答案 0 :(得分:11)
简单地说,没有区别。 -> Void
只是一种明确的方式,表示该函数不返回任何值。
来自docs:
没有定义返回类型的函数返回类型 Void 的特殊值。这只是一个空元组,实际上是一个零元素的元组,可以写成()。
因此,下面这三个函数声明是相同的:
func someFunc() {}
func someFunc() -> Void {}
func someFunc() -> () {}
答案 1 :(得分:3)
这只是一些内部Swift的不一致。两个定义都定义相同,但是:
func a() -> () {}
func b() {} //by default has same signature as a
func c() -> Void {} //has different signature than a && b
这样:
var x:(() -> Void) = c //OK
var y:(() -> ()) = a //OK
var z:(() -> ()) = c //ERROR - different signatures even if they mean the same
x = a //ERROR - different signatures, can't convert "() -> Void" into "() -> ()"