在Swift中检查变量

时间:2018-12-30 16:01:46

标签: swift

在Swift中,您不能像这样直接检查变量:

if testValue {
    ...
}

但是,实际上您可以通过如下方式对其进行检查:

let testValue: String?

if let test = testValue {
    ...
}

为什么呢?引擎盖下的魔力是什么?

2 个答案:

答案 0 :(得分:1)

如果testValue是布尔人,那么您可以说:

if testValue {
  //Code
}

但是,Swift的类型比C和其他类似C的语言严格。

在C中,指针可以为nil,为零,与false相同,所以

if (aPointer) {}

等效于

if (aPointer != nil)

但是,Swift不允许这样做。指针类型不能为零,nil是特殊的“无值”设置,与零或false相同。

您必须在Swift中明确说出if aPointer != nil

正如其他人指出的,if let是不同的东西,称为“可选绑定”。要说明您需要了解可选内容。

在Swift中,nil值由称为“可选”的特殊包装处理。将Optional视为包装的包装,可以为空,也可以包含一个对象。

Optional包含一些值或包含nil。要获得内部价值,您必须“解包” Optional

有一个“强制换行”(!)表达式,它表示“相信我,我知道这个Optional永远不会为零。”如果您使用它并且Optional 没有包含nil,则程序将崩溃。因此,我将其称为“如果为空则崩溃”运算符,并建议您避免使用它,除非您真的知道自己在做什么。

然后有“ if let”可选绑定。在以下代码中:

var value: String?

if let testValue = value {
    //test value only exists inside these braces.
    print(value)
} else {
    //testValue is not defined here
    print("value is nil")
}
//testValue isn't defined here either.

if let说:“如果可选变量value包含非零值,请从可选变量中删除该值,并将其放入名为{{ 1}},只能在let语句后的花括号内进行定义。

还有其他一些处理Optional的方法,例如testValue语句和“ nil Coalescing运算符”,但我将留给您研究它们。我不会在简短的论坛帖子中介绍if的各个方面。

答案 1 :(得分:0)

条件绑定if let / for let / while let是语言中特有的一种特殊形式。 let test = testValue部分与通常将其解析为的语句不同。前缀为if / for / while时,它具有特殊的含义。