Swift中的可选类型Optional与if let 语法

前端之家收集整理的这篇文章主要介绍了Swift中的可选类型Optional与if let 语法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一.可选类型:

Swift的nil和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形、浮点、布尔等)没有值时,也是nil。没有初始值的值,是不能使用的,这就产生了Optional类型。

1.声明:

可选数据类型是在现有的类型后面加个问号”?”

var str:String?

2.可选类型的赋值

对可选类型变量的赋值可以直接使用其变量名进行赋值,也可以直接赋值为nil。

str="123"

3.可选类型的使用

在使用可选类型变量,需要在变量名的后面加上感叹号”!”,”!”的一丝就是确定已经被赋值或确定已有值。

println(str!.toInt())

4.Optional的拆包

Optional类型的值不能被直接使用,当需要用时要显式拆包,以表明我知道这个Optional是一定有值的:

var str: String? = "Hello World!"
str! //Hello World!

对比拆包前后,对str的输出

var str: String? = "Hello World!"
str     //{Some "Hello World!"}
str!    //Hello World!

之所以要拆包使用,是因为Optional类型其实是一个枚举:

二.if let 语法(Optional Binding)

“=”等号右边必须是个Optional类型的变量

var count: Int?
count = 100
if let validCount = count {//如果count有值的话,把count的值赋给validCount,且条件为true;如果count为nil,则执行else
    "count is " + String(validCount)    //count的值为100
} else {
    "nil"
}

通过在条件判断语句中(如if、while等)把Optional值直接给一个临时常量,Swift会自动检测Optional是否包含值,如果包含值,会隐式的拆包并给那个临时常量,在接下来的上下文中就能直接使用这个临时常量

三.可选链(Optional Chaining)

Optional Chaining对Swift来说是很基本但又必不可少的东西,相对于简单类型(Int、String等)来说,Optional更主要的应用场景是在复杂对象上,当一个对象包含另一个对象,同时这两个对象都有可能为nil的情况下才是Optional派上用场的地方,在Objective-C里,向nil发消息得到的就是一个nil,但是Swift不能在nil上直接调用方法属性,同时为了方便我们使用,从而引入了Optional类型

猜你在找的Swift相关文章