Swift <四> 类型转换和空和运算符

可选类型

什么是可选类型呢?一个变量要么有值,要么没有值。

那么为什么产生可选类型呢?比如在OC中基本数据如果不赋值都会存在默认值,所以不会产生没有值得情况,但是没有值和默认值是完全不同的两个概念所以Swift中引入了”可选类型的概念”,来区分有值和没有值两种情况

1、可选类型

可选类型也是一种类型,代表可能有值,也可能没有值
swift中nil,不同于oc中的nil,oc中的nil为一个特殊的地址,swift中nil就是一个特殊含义的字符,表示没有值
只有可选类型才能被赋值为nil
非可选类型无论在哪里,什么时候都有值

var num: Int? = 1
2、强制解包(取出可选类型里面的值)
var num: Int? = 0

if num != nil {

num!
}

if let a = num {
a
}

func check(score: Int?) {

guard let s = score else {
print("111")
}

}

check(score: num)

1、类型转换符号

is:用于判断一个实例是否是某种类型

var a: Int = 0
a is Int

as: 净实例转换成某一种类型
as? :将某个类型转换成可选类型,通过判断某个可选类型是否有值,来决定是否转换成功(as? 代表系统尝试帮你进行转换,转失败了,值就是nil)
as! :将某个类型转成具体类型,但是如果不是该类型,程序就会崩溃 (as! 代表肯定可以转换成功,转换结果是非可选的,不能为nil)

2、空和运算符

空和运算符使用两个问好来表示(a ?? b)a 进行是否为nil的判断,如果a不是nil,那么久返还 a!,否则返回b (所以,a 必须是一个可选类型,同时 b 的值类型也要和 a 一样)

空和: 是对于三目运算符来某个值是否为nil的简写

a! == nil ? a! :b 三目
a ?? b 空和