加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:46:14 所属栏目:百科 来源:网络整理
导读:一.可选类型: Swift的nil和Objective-C有些不一样,在Objective-C中,只有对象才能为nil,而在Swift里,当基础类型(整形、浮点、布尔等)没有值时,也是nil。没有初始值的值,是不能使用的,这就产生了Optional类型。 1.声明: 可选数据类型是在现有的类型

一.可选类型:

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类型

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读