有一些方法可以展开可选值:
// 1st way
var str: String? = "Hello, playground"
if let strUnwrapped = str {
// strUnwrapped is immutable
println(strUnwrapped)
}
// 2nd way
var str: String? = "Hello, playground"
if var strUnwrapped = str {
// strUnwrapped is mutable
strUnwrapped = "Toldino"
println(strUnwrapped)
}
但我最近测试了以下一个......
// The strangest one
var str: String? = "Hello, playground"
if let var strUnwrapped = str {
// strUnwrapped is mutabe
strUnwrapped = "yolo"
println(strUnwrapped)
}
你能解释一下为什么它有用吗? 这是一个错误或功能?
修改
正如niñoscript所说,这是一个错误。
在Swift 2.0中解决了这个问题,我尝试使用新版本,它不再编译。
现在Xcode为&#34提出了以下错误;如果让var"
答案 0 :(得分:8)
此答案仅适用于Xcode 6,该问题已在Xcode 7中修复,如OP的编辑和Paul Jarysta的回答所述
在这种情况下:
if let var strUnwrapped = str {}
让var 的工作方式与 var 的工作方式相同,所以要么是bug,要么就是同样的事情。但是,如果您尝试以下简单代码:
let var n = 3
它抛出了这个错误:
'var'不能嵌套在另一个'var'或'let'模式
中
所以我们可以放心地认为这是一个错误。我们应该是优秀的开发者并报告它!
答案 1 :(得分:3)
此问题已在xcode 7中解决; - )