可选(Optional)类型

1.使用情景

有时候我们不能确定这个值是什么类型,所以我们可以使用Optional。

我们在如下情况使用可选类型:

(1)它有值但不确定

(2)没有任何值


2.optional分析

let possibleNum = "Hello"

let converNum :Int? = possibleNum.toInt()

?是可选类型。如果这里不实用int,这个转换就会失败,程序就会奔溃。而使用了?,再加上Int?代表可能是int类型。即使转换不成功,可不会报错。这里converNum的值是nil

当需要用到converNum的时候,我们就需要用到感叹号

println("the value:\(converNum!)")

var serverCode:Int? = 404

serverCode = nil

如果

var serverCode:Int = 404

serverCode = nil  //即会报错,非Optional Type的变量不能赋值为nil


3.总结:

  1. Optional类型允许变量没有值,其它类型如果没有初始化值在使用时会报错 —— 比如通过下标访问数组元素时返回Optional类型,越界时可以返回nil;

  2. 在声明一个Optional类型变量时如果没有赋初始值,那么默认为nil;

  3. Optional类型变量的真实值是被封装起来的,包装在其枚举值Some中,如上{Some 123};

  4. 使用问号?表示封装(可能有值可能没有),使用感叹号!表示拆封取值(强制认为有值,如果没有则会触发运行时错误)

  5. 由于Optional枚举类型遵循LogicValue协议,所以可以作为逻辑判断条件,当有值时为true,不包含值时为false;

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