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

swift中?和!

发布时间:2020-12-14 05:54:23 所属栏目:百科 来源:网络整理
导读:swift已经更新到4.0了,苹果也逐步重视起来,这就逼着你去了解这个语言。看着通篇的? 、!以及??,说实话有点晕。。。 ?其实就是swift的一种新的类型,这个类型是一个可选类型(optional)。这个标志表示我定义一个变量为可选类型的。例如 let num:Int?

swift已经更新到4.0了,苹果也逐步重视起来,这就逼着你去了解这个语言。看着通篇的? 、!以及??,说实话有点晕。。。

?其实就是swift的一种新的类型,这个类型是一个可选类型(optional)。这个标志表示我定义一个变量为可选类型的。例如

let num:Int?

这个可选类型就是表示,我生明了一个类型如果有值就为Int类型的,如果没有值那么就是nil。所以说我并没有声明变量num为Int类型,而是可选类型的,可能是Int也可能是nil。

当我对num显式赋值时

let num:Int? = 3

那么num就是Int类型,当我没有对num显式赋值,那么num为nil类型

如果想要操作一个optional类型的变量,需要先进行解包,然后才能操作,这时就用到了!

!表示强解包,在使用的时候要注意,如果有值就会得到变量的值,如果为nil那么程序会crash

例如

 
 
// 定义一个string的可选类型str,显式赋值
var str: String? = "Hello"
if str{
let message = "你好" + str!
print(message)
}

因为已经给str赋值为hello,所以if判断条件成立,然后给name强解包,得到hello

同样

// 定义一个string的可选类型str,但是没有显式赋值
var str: String?
let message = "你好" + str!
print(message)

强解包程序会crash掉

所以在使用!强解包的时候一定要确定解包对象不为nil,否则会引起程序崩溃

(编辑:李大同)

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

    推荐文章
      热点阅读