您现在的位置是:首页 > 文章详情

《从零开始学Swift》学习笔记(Day 27)——可选类型

日期:2017-11-26点击:514

可选类型:

我们先看看如下代码:

1
2
3
4
var n1: Int =  10
n1 = nil          //编译错误
  
let str: String = nil     //编译错误


IntString类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:

1
2
3
4
var n1: Int? =  10
n1 = nil
  
let str: String! = nil


Int?String!都是原有类型IntString可选类型,它们可以接受nil

 

可选类型值拆包

在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:

1
2
var n1: Int? =  10
print(n1)


输出的结果是Optional(10),而非10。所以试图计算表达式n1+ 100会发生编译错误,代码如下:

1
2
var n1: Int? =  10
print(n1 +  100 )       //发生编译错误


需要对可选类型值进行“拆包”是必要地。

“拆包”分为显示拆包和隐性拆包。

使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;

使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。

看看下面代码:

1
2
3
4
5
var n1: Int? =  10
print(n1! +  100 )      //显式拆包
  
var n2: Int! =  100       
print(n2 +  200 )           //隐式拆包


 

本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746587,如需转载请自行联系原作者

原文链接:https://yq.aliyun.com/articles/406438
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章