1

我正在阅读 Apple 关于可选绑定的开发人员文档

为什么我不能使用:

如果有一些可选的?{

陈述

}

代替

if let constantName = someOptional {

陈述

}

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

4

2 回答 2

5

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

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

// 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
}
于 2016-05-02T19:05:09.933 回答
1

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

Optional 不仅仅是变量的状态,它是一种完全不同的类型。如果你设置var someOptional: String?var someOptional: String,你并没有解开 someOptional,你实际上是在改变 someOptional 的类型。

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

于 2016-05-02T18:58:15.027 回答