为什么我可以使用常量初始化作为if-condition?

时间:2016-01-27 19:35:47

标签: swift if-statement initialization conditional-statements

在阅读官方Apple指南时,我发现了这个

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello \(name)"
}

有一个不变的声明和赋值,我作为一个初学者 - 期望一个表达式返回boolean。但是这个if语句的条件似乎是true作为值,因为括号内的代码正在执行。

常量的初始化是否返回boolean值或if语句可用作条件的内容?

1 个答案:

答案 0 :(得分:0)

这称为可选绑定。引用基础知识 - > Optionals - > Swift语言指南的可选绑定部分。

  

使用可选绑定来查明可选项是否包含   值,如果是,则使该值可用作临时常量   或变量。可选绑定可与if和while语句一起使用   检查可选内部的值,并提取该值   变成一个常数或变量,作为单一动作的一部分。

这个if let构造正在做的是检查someOptional是否存在。如果它不是nil / .None那么它就会"绑定"常量的可选值。

if let constantName = someOptional {
    ...
}

这可以被认为是:

if someOptional != nil {
    let constantName = someOptional!
    ....
 }