Swift空合并运算符

一、空合并运算符基本使用

??: 空合并运算符

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

你可能感兴趣的:(Swift空合并运算符)