Swift 进阶【三】可选值

Swift 中可选值的定义如下

1
2
3
4
enum Optional<Wrapped> {
case none
case some(wrapped)
}

因为 Optional 是枚举类型,所以有的时候可以用模式匹配来进行一些巧妙的操作:

  • 使用 if case 来进行模式匹配,对非 nil 的值做 for 循环
1
2
3
4
5
let ary = [1, 2, nil, 4, nil, 44]
for case let i? in ary {
print(i)
}
// 1, 2, 4, 44
  • 或者只对 nil 值进行循环
1
2
3
for case nil in ary {
print("No Value")
}

这里使用了 x? 这个模式,它只会匹配那些非 nil 的值。这个语法是 .Some(x) 的简写形式,所以该循环还可以被写为:

1
2
for case let .some(i) in ary {
}