- 可选类型的本质: 其本质是enum类型
/// Optional的内部实现
public enum Optional : ExpressibleByNilLiteral {
case none
case some(Wrapped)
public init(_ some: Wrapped)
}
func testOptional() {
var age: Int? = 10 // 等价于 var age1: Optional = .some(10) var age = Optional(10)
age = .some(10)
age = nil // 等价于 age = .none
var age1: Optional = .some(20) // 等价于 age1 = Optional(20)
// 可选的本质是枚举,所以可以用switch取值
switch age {
case .some(let a):
debugPrint(a) // 20
case .none:
debugPrint("none")
}
}