swift中? 、! 和 ??

swift中?和!大家可能都知道是可空类型 optional ,也叫可选类型

这样做是为了类型安全,比如声明一个对象A为可选类型,或者一个可选的String

var a:A?
var str:String?
var num:NSNumber!

可选类型 可以不用初始化,如果不是可选类型,必须在init下进行初始化。保证在调用的时候不是nil

可选类型在调用的时候必须加上?或者!,声明的时候用的!的可以不加,表明你认定这个对象再使用的时候肯定不会为nil,也可以加?不会报错

a?.age
//这样调用如果a是nil就不执行a.age如果a不是nil才会去调用它的属性,得到的也是一个可选的值

a!.age
//表示你认定a可定不是nil,如果a是nil就会报错,得到是固定的值

if let a = a{
  a.age
  //可选绑定 如果a不为nil会进来执行a.age得到的是非可选的值
}

//如果有多个可选绑定
if let a = a,str=str{
  //blabla
}

?和!网上讲的都很多,其实关于可选这里还有个??

??是取两个中不为nil的

private var i:Int?
private var j:Int?
1、只有i有值
i = 1
let x = i ?? j
print(x) //输出optional(1)
2、只有j有值
j = 0
let x = i ?? j
print(x) //输出optional(0)
3、i和j都有值
i = 1
j = 2
let x = i ?? j
print(x) //输出optional(1)
4、i和j都没值
let x = i ?? j
print(x) //输出nil

你可能感兴趣的:(swift中? 、! 和 ??)