具有Void返回类型与无返回类型的Swift函数

时间:2016-09-06 04:17:31

标签: swift function return-type

我正在努力理解Swift中的返回值。 你能解释一下这些之间的区别吗?

func someFunc() -> Void {}
func someFunc() {}

2 个答案:

答案 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 "() -> ()"