在阅读The Swift Programming Language时,我遇到了以下片段:
您可以使用 if 和 let 一起使用可能缺少的值。这些值表示为 optionals 。可选值包含一个值或包含nil来指示该值丢失。在值的类型后写一个问号(?),以将该值标记为可选。
// Snippet #1 var optionalString: String? = "Hello" optionalString == nil // Snippet #2 var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \(name)" }
片段1很清楚,但是片段2发生了什么?有人可以分解并解释吗?它只是使用if - else块的替代方法吗?let在这种情况下的确切作用是什么?
if - else
let
我确实读过此页面,但仍然有些困惑。
if let name = optionalName { greeting = “Hello, (name)” }
这有两件事:
它检查是否optionalName有值
optionalName
如果是这样,它将“解包”该值并将其分配给被调用的String name(仅在条件块内部可用)。
name
请注意,类型name为String(not String?)。
String
String?
如果不使用let(即带有just if optionalName),则仅当有值时,它仍会进入块,但您必须以方式手动/明确地访问String optionalName!。
if optionalName
optionalName!