如果以下代码运行
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
print(airports["YYZ"])
为什么控制台打印
可选(“Toronto Pearson”)
为什么打印Optional(withValue)而不仅仅是值?
为什么我需要在控制台中知道?
答案 0 :(得分:1)
Swift对可能失败的操作有optional types。像airports["XYZ"]
这样的数组索引就是一个例子。如果找不到索引,它将失败。这取代了nil
类型或例外。
解包可选类型的最简单方法是使用感叹号,如下所示:airports["XYZ"]!
。如果值为nil
,这将导致恐慌。
你可以在Swift中链接选项类型的方法,如果左边的值是nil
,它会提前退出到nil
而不调用方法。当您在值和方法之间插入问号时,它会起作用:airports["XYZ"]?.Method()
。由于值为nil
,因此永远不会调用Method()
。这允许您延迟决定是否处理可选类型,并且可以稍微清理您的代码。
要安全使用可选类型而不恐慌,只需使用if
语句提供备用路径。
if let x:String? = airports["XYZ"] {
println(x!)
} else {
println("airport not found")
}