如果让var - Unwrapping可选值

时间:2015-06-05 13:14:49

标签: ios swift

有一些方法可以展开可选值:

// 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" xcode error

2 个答案:

答案 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中解决; - )

enter image description here