如果允许陈述的重点是什么?

时间:2016-02-23 19:19:56

标签: swift

我已经阅读过关于可选绑定的Swift文档,但在我的知识水平(和/或智能)方面,这对我来说是不可理解的。

之间的区别是什么:

var number:Int? = 1
if let num = number {
    print("number is \(number!)"
} else {
    print("it must be nil")
}

var number:Int? = 1
if number==nil {
    print("it must be nil")
} else {
    print("number is \(number!)"
}

据我所知,这些工作相同,至少对我而言,第二个更具可读性。而且我通常不会关心这样的事情,但if let在大多数基本教程中都很突出,比如它有用,所以我真的很想知道为什么。

4 个答案:

答案 0 :(得分:5)

假设您有两个可选值A和B. 经典语法

if a != nil {
    if a?.b != nil {
        here access a.b.blah 
    }
}

新语法

if let blah=a?.b?.blah {
   use blah ...
}

它更短,更易读,更灵活

答案 1 :(得分:0)

应该是

print("number is \(num)"

所以它做了什么它做了nil检查和分配到一行中的非optiional constand

答案 2 :(得分:0)

答案是避免在一个条款中展开力量 事实上你总是在这个子句之后看到一个语句没有帮助,但想象你在变量不同于nil的范围内有更多的语句,想象一下要记住!每次你需要参考未包装的值。
使用if let可能是编译器在正常检查nil时转换它,然后是简单的变量赋值。

答案 3 :(得分:0)

当您使用if let语句时,您还可以将可选值number展开到Int语句范围内的非可选if let

var number: Int? = 1
if let number = number {
    // number is an Int
    print("number is \(number!)")
} else {
    // number is an Int?
    print("it must be nil")
}