《从零开始学Swift》学习笔记(Day 27)——可选类型
可选类型:
我们先看看如下代码:
1
2
3
4
|
var n1: Int =
10
n1 = nil
//编译错误
let str: String = nil
//编译错误
|
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
1
2
3
4
|
var n1: Int? =
10
n1 = nil
let str: String! = nil
|
Int?和String!都是原有类型Int和String可选类型,它们可以接受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,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Android学习参考2
一名自学成才的Android开发者怒答! 1. Google 做开发前完全是小白,真心不知道有Google这东西,只晓得百 度,遇到问题直接百度,不是黑百度,百度在娱乐八卦方面确实靠谱,但是技术方面查出来的东西基本千篇一律,有些答案甚至还会起到误导作用,直到有一天我的 老大告诉我用Google,我才知道这个世界上原来还有另外一个搜索引擎,那个时候Google还没有被墙,从此算是迈过了一道坎。。。自此便成为脑残G 粉。 2. stackoverflow 用Google之后搜索出来的东西还是习惯性的点击中文结果,直到有一天我发现基本每次搜 索排名第一的都是这个网站,于是尝试着点进去用我蹩脚的英语阅读,之后真是相见恨晚的感觉啊,上面几乎能搜到你遇到的绝大部分问题,某种程度上来说推荐用 Google搜索的原因之一是因为排名靠前的答案基本都在stackoverflow上。 3. GitHub Google+stackoverflow 基本上能解决开发中遇到的大部分“奇葩”问题了,但是开发到一定程度你需要进一步提升自己的技能,这个时候GitHub简直就是快速提升必备,在上面可以 找到很多第三方组件...
-
下一篇
几个移动App测试工具
大致介绍如下: bugly:腾讯推出的移动应用崩溃检测服务,提升团队解决异常的效率。 bugHD:开发者可以追踪崩溃信息、崩溃版本、崩溃总数、发生设备和是否修复等信息。是Fir.im 团队做的产品; ----------------------------更多介绍如下,详细请参考个网站官网,及阅读相关帮助 -------------------------- Bugly 是腾讯内部使用的移动应用崩溃检测服务,同时支持 iOS和 Android 平台。目前 Bugly 已经对移动开发者开放。移动开发者在自己的 App 中接入 Bugly 的 SDK 后,就能在应用崩溃后获得信息上报。开发者可以通过 Bugly 的网站看到崩溃的概要和详情。崩溃概要包括,崩溃的列表、近日按小时统计趋势、昨天前天的崩溃次数和崩溃率。 每一类的崩溃详情包括,崩溃发生的机型和系统配置、崩溃时的运行状态、出错线程和其他线程的堆栈,甚至还有系统日志。崩溃详情让开发者了解崩溃发生时各方面的情况,从而方便开发者查找崩溃原因。 Bugly的优势在于,Bugly已经在腾讯内部使用了 4 年,产品经过了细致的内部打磨。 根据...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程