我已经阅读过关于可选绑定的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
在大多数基本教程中都很突出,比如它有用,所以我真的很想知道为什么。
答案 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")
}