一、空合并运算符基本使用
??: 空合并运算符
a ?? b
- a为可选项
- b为可选项或者不是可选项
- b跟a的存储类型一致
- a不为nil,就返回a 。
- a为nil,就返回b。
- 如果b不是可选项,返回a时会自动解包。如果b是可选项,返回a时返回的类型还是可选类型a.
let a: Int? = Int("3");
let b: Int = 2;
let c = a ?? b
print(c) // 3
//a不为nil,返回a。b是非可选项返回的a就会自动解包
let a: Int? = Int("3a");
let b: Int = 2;
let c = a ?? b
print(c)//2
//a为nil,返回b
let a: Int? = Int("3");
let b: Int? = 2;
let c:Int? = a ?? b
print(c)//Optional(3)
//a不为nil,返回a。b是可选项,返回的a还是可选项Optional(3)
let a: Int? = Int("3a");
let b: Int? = 2;
let c:Int? = a ?? b
print(c)//Optional(2)
//a为nil,返回b
二、??跟if let配合使用
let a: Int? = Int("3a");
let b: Int? = 2;
if let c = a ?? b{
print(c)
}
- 类似于if a !=nil || b !=nil
let a: Int? = Int("3a");
let b: Int? = 2;
if let c = a, let d = b {
print(c)
print(d)
}
- 类似于if a !=nil && b !=nil