为什么 SWIFT 打印“可选(...)

Why does SWIFT print "Optional(...)

如果运行下面的代码

var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

print(airports["YYZ"])

为什么控制台打印

Optional("Toronto Pearson")

为什么它打印 Optional( withValue ) 而不仅仅是值?

为什么我需要在控制台中知道这些信息?

Swift 有 optional types 可能失败的操作。像 airports["XYZ"] 这样的数组索引就是一个例子。如果找不到索引,它将失败。这代替了 nil 类型或异常。

解包可选类型的最简单方法是使用感叹号,例如:airports["XYZ"]!。如果值为 nil.

,这将导致恐慌

Here's some further reading.

您可以在 Swift 中的选项类型上链接方法,如果左侧值为 nil,这将提前退出到 nil 而无需调用方法。当您像这样在值和方法之间插入问号时,它会起作用:airports["XYZ"]?.Method()。因为值为 nil,所以永远不会调用 Method()。这允许您延迟决定是否处理可选类型,并且可以稍微清理您的代码。

要安全地使用可选类型而不引起恐慌,只需使用 if 语句提供备用路径。

if let x:String? = airports["XYZ"] {
    println(x!)
} else {
    println("airport not found")
}