什么是类型'()'在快速?

时间:2017-03-28 14:31:59

标签: swift

我收到一个传递()类型参数的事件。

这是一个空元组吗??

我指的是这种表达方式:

let x = ()

3 个答案:

答案 0 :(得分:4)

()既是类型Void是空元组类型的类型别名),也是该类型的唯一 。所以

let x = ()

使用 x()定义为类型 Void(又名())的常量属性

等效陈述将是

let x:() = ()
let x:Void = ()

不是

let x = Void // error: expected member name or constructor call after type name

因为Void是类型而不是值。

定义函数类型时没有参数和/或没有返回值 对于空参数列表使用()似乎已达成共识, 和Void没有返回值。例如,这可以在中看到 UIKit完成处理程序,或提交的执行块 GCD调度队列,例如

func sync(execute block: () -> Void)

答案 1 :(得分:2)

是的,它是空元组,又名Void

标准Void类型定义为:

typealias Void = ()
  

未明确指定返回类型的函数的返回类型;一个空元组(即())。

答案 2 :(得分:2)

查看Swift grammar的文档:

  

所有元组类型都包含两种或更多类型,Void除外,type alias为空元组类型()

tuple-type → (­)­ | (­ tuple-type-element­ , ­tuple-type-element-list­ )­
tuple-type-element-list → tuple-type-element­ | tuple-type-element ­, ­tuple-type-element-list­
tuple-type-element → element-name­ type-annotation­ | type­
element-name → identifier­

因此,是的,它是零类型/元素的元组。