Swift - 可选类型

在实际开发过程中,经常会遇到一个数据可能有值,也可能没有值的情况。针对这种情况,Swift增加了可选类型(Optional)。可选类型可以生命所有的数据类型。
可选类型的声明
在声明常量或变量时,在类型后面加问号(?),就表示它是可选的。
(1)可选常量:

let a:Int?

可选常量没有默认值,在使用之前必须设置初值。

可选常量必须设置初值

(2)可选变量:

var x:Int?

可选变量如果不给赋初值,它的默认值为 nil

Swift - 可选类型_第1张图片
可选变量默认为nil
Swift - 可选类型_第2张图片
可选变量赋初值的打印结果

注意:Swift中的nil和Objective-C中的nil不一样。在OC中,nil表示空指针,只能用于对象类型,在Swift中,没有指针的概念,nil的含义是一个值,表示值的缺失,可用于任何类型。

解包
可选类型不能直接参与计算,参与计算时需要进行解包。解包的方法是在可选项后加感叹号(!)。

let x:Int? = 10
print(x! + 2)

在解包前,可选项必须有值


可选项没有值进行计算会报错

隐式解析
可选类型每次解包很麻烦,可以采用隐式解析的方法,在声明时将数据类型后的问号改成叹号。

let x:Int! = 10
var y:Int!= 20

如果变量的值可能为nil,不要用隐式解析的方法

空合并运算符
可选类型如果为空是不能参与运算的,所以在使用之前要对其进行判断,空合并运算符可以简化运算:

Swift - 可选类型_第3张图片
Swift - 可选类型_第4张图片

空合并运算符相当于算目运算符:a! = nil ? a! : b。空合并运算符更加简洁,可读性增强。

使用空合并运算符需要注意,必须符合以下两个条件:

  • 表达式 a 必须是可选类型
  • 默认值b的数据类型必须与 a 的值 数据类型一致

OK,这就是可选类型的声明和基本用法,明天分享控制流。

你可能感兴趣的:(Swift - 可选类型)