上一篇文章的结尾稍微介绍了下swift中的optional
因为swift中任何类型都设置为可选项目optional,并且与oc的nil不一样,因此单独出来
没有默认值的可选项
var op: Int? // 声明一个可选项,没有设置默认值,这个时候op的值为nil
// var op: Int? = 6 这个是默认值的可选项
print(op) // 输出nil 但是xcode会提醒你:Expression implicitly coerced from 'Int?' to 'Any'
print(op ?? 3) // 输出3, 这个意思是op如果有值,就输出op的值,如果没有值就输出3 ?? 称为合并空值运算符
?? 在swift中称为合并空值运算符 ,
?? 运算符, 第一个操作数必须为可选项,其实他是一种简写:op != nil ? op! : 3;
op =1 // 重新设置值 这时候op的值为1
print(op!) // op!表示对op强行解包,意思是告诉编译器op到这里一定有值,如果没有值,程序员负责程序的安全,程序运行到这里就停止 因为我们上一句代码赋值了,所以程序运行到这里不会出问题
if语句以及强制解开(强行解包)
可以利用if语句通过比较nil来判断可选项是否有值,利用相等运算符"==" 或者不相等运算符"!="
// 定义可选项
var str:String?
if str! = nil {
print("str可选项有值\(str!)")
}
str ="给可选项赋值"
if str != nil{
print("str可选项有值\(str!)")
}
// 可选项绑定
if let rst = str { // 当可选项str 有值时,赋值给rst,并且进入if判断分支,在if的代码块中可以使用rst
print("str可选项有值\(rst)")
}
网友评论