https://www.hackingwithswift.com/sixty/10/2/unwrapping-optionals
翻译 2021.4.21
解包
可选类型 的 strings 可能包含一个字符串,也可能为nil
定义一个可选类型的string
var name: String? = nil
当我们调用 name.count?
的时候会发生什么,一个真实的字符串包含一个属性count
,表示字符串有多少个字符。
但是这个name是nil,它是一个空内存,所以它没有 count
这个属性
正因为如此,当我们试着去用name.count
的时候,这是不安全的,在swift
中不被允许。
与之代替的是,我们可以看看可选类型里面有什么,这就是解包
最常用的方式就是 if let
synax
if let unwrapped = name {
print("\(unwrapped.count) letters")
} else {
print("Missing name.")
}
假如 name
是一个string,它将作为一个常规的字符串被放入unwrapped
中,我们能读取 count
属性在条件内,作为选择,假如 name
是空,那个 else 内的代码将被执行