为什么这样做:
let xxx : Optional<Int> = 1
我的期望是我必须说以下(也有效):
let xxx : Optional<Int> = .Some(1)
答案 0 :(得分:2)
来自Apple的The Swift Programming Language书(重点是我的):
类型Optional是一个包含两种情况的枚举,None和 一些(包裹),用于表示可能会或可能不会的值 出席。任何类型都可以显式声明为(或隐式) 转换为)可选类型。如果您没有提供初始值 当您声明可选变量或属性时,其值 自动默认为零。
因此,在Swift Optional<Wrapped>
中只是enum的一个特例,为此定义了来自任何类型的隐式转换,并且您编写的行实际上是等效的。所以@nhgrif is right:它是一种语法糖。
UPDATE (来自评论):由于赋值运算符无法重载,因此无法在自定义枚举中重复此行为。它在某种程度上是一种语法糖:它取代了#34;取代了#34; 1
.Some(1)
nil
和.None
CalendarPickerView
,但它是一个神奇的&#34;语法糖确实。