打开导致崩溃的选项似乎是违反直觉的

时间:2016-08-25 15:14:38

标签: swift optional

我知道Swift有一条规则,如果你试图打开一个包含nil的Optional,它会崩溃。

只是一个想法,如果我想要一个类型是可选的(允许nil或一个值),为什么我要让我的程序崩溃如果我解开它,即使我明确说nil是允许我的类型?

3 个答案:

答案 0 :(得分:1)

简单地说:您不希望应用程序崩溃。当您可能需要或不需要值时,可选项非常适用,但您希望将变量分配给类型以防万一。

这类似于骑自行车时戴头盔。您可能会或可能不会在骑行期间跌落(分配值),但如果您这样做,您肯定会很高兴您有头盔(准备好变量 )对于这种情况。现在,如果你没有摔倒并发现头盔无用(找{4}} ),你只需继续踩踏(处理nil) 。这是我们在代码中倾向于做的事情。如果我们找到nil值,我们会相应地处理它,这样程序就不会崩溃。

在Swift中处理nil返回值的方法有很多种。这些技术中的一些包括但不限于:

答案 1 :(得分:1)

展开可选意味着在Optional中获取(非零)值。如果可选项包含nil,则崩溃非常正确。

有几种方法可以有条件地展开可选值

E.g。

let name: String? = nil

如果让

if let name = name {
    print(name)
}

保护让

guard let name = name else { return }
print(name)

内联条件

name?.uppercaseString

答案 2 :(得分:0)

防止未定义的行为。如果你想对一个属性做一些事情,你希望它包含一些东西。如果它在那时意外地为零,你应该意识到它并采取相应的行动。可能存在尝试用零做某事的情况(如果应用程序没有崩溃),整个流程可能会卡住。