unwrapping optionals

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 内的代码将被执行

你可能感兴趣的:(unwrapping optionals)