我正在阅读以下书籍,第32页上有一段代码片段。 2014年12月:第一版。
与CocoaJonathon Manning的快速发展,巴黎Buttfield-Addison, 和Tim Nugent
我知道我们可以使用?
使vairbale可选,并!
在Swift中展开可选的vairbale
var str: String? = "string"
if let theStr = str? {
println("\(theStr)")
} else {
println("nil")
}
为什么我们需要?
这一行if let theStr = str?
看起来工作得很好而没有任何区别。
答案 0 :(得分:2)
你不需要它,也不应该拥有它。可选绑定评估可选项。如果它是零,则停止。如果它不是nil,它会将值赋给您所需的变量,然后在if语句的大括号内执行代码。
自首次以测试形式发布以来,该语言略有变化。我的猜测是?曾经被要求。
我从Github使用的一些示例项目无法编译,我必须编辑它们才能使它们工作。这可能是语法略有改变的示例。
答案 1 :(得分:1)
当前版本的Swift并不需要它,因为它是多余的,因为您的变量已经是可选的。
无论你在if语句中放入什么都必须是可选的,否则你会收到错误
条件绑定中的绑定值必须是可选类型
此外,如果要转换为类型,则需要使用as?
强制转换为可选类型。
var str2: Any = ["some", "example"]
if let theStr = str2 as? [String] {
println("\(theStr)")
} else {
println("nil")
}