在swift中`if var`和`if let`之间有什么不同?

DNB*_*ims 9 swift

考虑这两个代码:

if let myValue = myObject.value as NSString?{
 //logic here
}
Run Code Online (Sandbox Code Playgroud)

VS

if var myValue = myObject.value as NSString?{
 //logic here
}
Run Code Online (Sandbox Code Playgroud)

我知道let关键字是定义一个常量,这是否意味着第一行代码,如果myObject.value是NSString,myValue则会产生常量?这看起来令人困惑.

Luc*_*tti 18

如果你使用let那么你将无法改变myValue.

if let myValue = myObject.value as NSString? {
    myValue = "Something else" // <-- Compiler error
}
Run Code Online (Sandbox Code Playgroud)

另一方面,var你可以.

if var myValue = myObject.value as NSString? {
    myValue = "Something else" // <-- It's fine
}
Run Code Online (Sandbox Code Playgroud)

请注意,myValue确实只存在if于其范围内并且更改其值不会在其范围之外产生影响.

希望这可以帮助.


Gre*_*reg 6

let用来创建常量,因此在第一个示例中您无法更改myValue.

使用时var,myValue是一个可以在if语句中更改的变量.