原创文章,欢迎转载。转载请注明:关东升的博客
可选类型:
我们先看看如下代码:
varn1:Int=10 n1=nil//编译错误 letstr:String=nil//编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
varn1:Int?=10 n1=nil letstr:String!=nil
Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。
可选类型值拆包
在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
varn1:Int?=10 print(n1)
输出的结果是Optional(10),而非10。所以试图计算表达式n1+ 100会发生编译错误,代码如下:
varn1:Int?=10 print(n1+100)//发生编译错误
需要对可选类型值进行“拆包”是必要地。
“拆包”分为显示拆包和隐性拆包。
使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
看看下面代码:
varn1:Int?=10 print(n1!+100)//显式拆包 varn2:Int!=100 print(n2+200)//隐式拆包
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。