swift中?和!

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,否则会引起程序崩溃

相关文章

Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章。自从苹果发布 Swfit 编程语言,就成为了...
快,快,快!动动您的小手,分享给更多朋友! 苹果去年推出了全新的编程语言Swift,试图让iOS开发更简单...
开发者(KaiFaX) 面向开发者、程序员的专业平台! 和今年年初承诺的一样,苹果贴出了Swift语言的源码,...
本文由@Chun发表于Chun Tips :http://chun.tips/blog/2014/12/11/shi-yong-swift-gou-jian-zi-ding-yi...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...
本文由CocoaChina译者leon(社区ID)翻译 原文:THE RIGHT WAY TO WRITE A SINGLETON 在之前的帖子里聊过...