我收到一个传递()
类型参数的事件。
这是一个空元组吗??
我指的是这种表达方式:
let x = ()
答案 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
因此,是的,它是零类型/元素的元组。