Swift可选绑定,为什么需要本地var?

时间:2016-05-02 18:34:14

标签: swift optional-binding

我正在Optional Binding

上阅读Apple的开发人员文档

为什么我不能使用:

  

如果有些可选吗? {

     
    

语句

  
     

}

而不是

  

如果让constantName = someOptional {

     
    

语句

  
     

}

为什么不需要局部变量或常量?

2 个答案:

答案 0 :(得分:5)

  

为什么我不能使用:if someOptional? {...}

因为可选变量的?后缀是为optional chaining保留的,这允许您访问属性或调用给定可选变量的方法。例如:

// returns an optional version of a given property
let aProperty = anOptional?.someProperty

// calls the method if aProperty contains a value – otherwise doesn't
aProperty?.doSomething()

如果您只想检查可选项是否包含值,但不关心该基础值,则只需将其与nil进行比较即可。例如:

if anOptional != nil {
    // do something
}

答案 1 :(得分:1)

简单的答案是someOptional是一个Optional,而constantName是一个Type。

可选不仅仅是变量的状态,它是完全不同的类型。如果您要将var someOptional: String?设置为var someOptional: String,那么您不会解开someOptional,实际上您正在更改someOptional的类型。

它在功能上与将var someOptional: String更改为var someOptional: Int

相同