一尘不染

在Swift中使用可选值

swift

在阅读The Swift Programming
Language时
,我遇到了以下片段:

您可以使用 iflet 一起使用可能缺少的值。这些值表示为 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在这种情况下的确切作用是什么?

我确实读过此页面,但仍然有些困惑。


阅读 191

收藏
2020-07-07

共1个答案

一尘不染

if let name = optionalName {
greeting = “Hello, (name)”
}

这有两件事:

  1. 它检查是否optionalName有值

  2. 如果是这样,它将“解包”该值并将其分配给被调用的String name(仅在条件块内部可用)。

请注意,类型nameString(not String?)。

如果不使用let(即带有just if optionalName),则仅当有值时,它仍会进入块,但您必须以方式手动/明确地访问String
optionalName!

2020-07-07