Swift学习(十九): 可选项本质(多重可选项本质)

可选项的本质

  • 可选项的本质是enum类型

 这是底层可选项的代码,可以看出本质是enum

var age: Int? = 10 

等价于以下四种:

var age0: Optional<Int> = Optional<Int>.some(10)
var age1: Optional = .some(10)
var age2 = Optional.some(10)
var age3 = Optional(10)
var age: Int? = nil

等价于以下四种:

var age = nil
var age3 = .none
var age0 = Optional<Int>.none
var age1: Optional<Int> = .none

switch举例:

var age: Int? = .none
age = 10
age = .some(20)
age = nil

switch age {
    //必须带?才会对age自动解包并赋值给v
case let v?:
    print("some", v)
case nil:
    print("none")
}

也可以写成:
if let v = age {
    print("some", v)
} else {
    print("none")
}

还可以写成:
switch age {
case let .some(v):
    print("some", v)
case .none:
    print("none")
}

多重可选项的本质

var age_: Int? = 10
var age: Int?? = age_
age = nil

上面的可以写成如下两种形式:
var age0 = Optional.some(Optional.some(10))
age0 = .none
var age1: Optional<Optional> = .some(.some(10))
age1 = .none
var age: Int?? = 10
可以写成:
var age0: Optional<Optional> = 10

猜你喜欢

转载自blog.csdn.net/weixin_42433480/article/details/97175850