Swift学习——Swift解释特定的基础(七)
Implicitly Unwrapped Optionals 隐式解析选项
如上所述。可选意味着常数或变量“没有值”。通过可选if声明来推断是否存在值,假设有值析值。
有时候在程序架构中,第一次被赋值之后。能够确定一个可选总会有值。
在这样的情况下。每次都要推断和解析可选值是很低效的,由于能够确定它总会有值。
这样的类型的可选被定义为隐式解析可选(implicitly unwrapped optionals)。
把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选。
当可选被第一次赋值之后就能够确定之后一直有值的时候,隐式解析可选很实用。隐式解析可选主要被用在 Swift 中类的构造过程中,请參考类实例之间的循环强引用。
一个隐式解析可选事实上就是一个普通的可选,可是能够被当做非可选来使用,并不须要每次都使用解析来获取可选值。以下的样例展示了可选String和隐式解析可选String之间的差别:
let possibleString: String?= "An optional string." println(possibleString!) // requires an exclamation mark to access its value // prints "An optional string." let assumedString: String! = "An implicitly unwrapped optional string." println(assumedString) // no exclamation mark is needed to access its value // prints "An implicitly unwrapped optional string.
你能够把隐式解析可选当做一个能够自己主动解析的可选。
你要做的仅仅是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。
注意:假设你在隐式解析可选没有值的时候尝试取值。会触发执行时错误。和你在没有值的普通可选后面加一个惊叹号一样。
你仍然能够把隐式解析可选当做普通可选来推断它是否包括值:
if assumedString { println(assumedString) } // prints "An implicitly unwrapped optional string.你也能够在可选绑定中使用隐式解析可选来检查并解析它的值:
if let definiteString = assumedString { println(definiteString) } // prints "An implicitly unwrapped optional string.
注意:假设一个变量之后可能变成nil的话请不要使用隐式解析选项。假设你需要推断一个变量的生命周期是否nil如果。请使用普通的可选类型。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- SQL Server 2005基础应用视频教程下载学习
- Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
- 50道JavaScript基础面试题(附答案)
- 《jquery权威指南2》学习笔记------基础函数
- Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
- Java实现 蓝桥杯 基础练习 特殊的数字
- 机器学习基础题目
- 深度学习基础(常见的网络2)
- LVM学习之LVM基础
- Machine Learning on Spark——第三节 统计基础(一)
- 编程语言C#基础入门精华大总结
- mysql常用基础操作语法(九)~~外连接查询【命令行模式】
- Interview之ML:机器学习算法工程师结构知识思维导图集合、求职九大必备技能之【数学基础、特征工程能力、模型评估和优化、机器学习基本概念/经典算法、深度学习算法、业务与应用】(持续更新)
- 如何从 0 开始学 Python 自动化测试开发(附零基础学习资料)
- Java基础:容器
- y38.第三章 Kubernetes从入门到精通 -- yaml文件及语法基础(十一)
- 软件测试是不是IT行业最容易学的 ?没有基础才学IT软件测试大概需要多长时间,就业前景好吗?
- Appium自动化测试基础 — APP模拟手势高级操作(三)
- Appium自动化测试基础--补充:C/S架构和B/S架构说明
- 选择大于努力!贵阳校区小哥哥0基础成功转行软件测试收获12K!
- 0基础也能学!软件测试自学路线(附带学习资料)
- python基础===进程,线程,协程的区别(转)
- 信号完整性(SI)电源完整性(PI)学习笔记(七)电感的物理基础(二)
- 【ES】Elasticsearch核心基础概念:文档与索引
- 机器学习:基础介绍
- 深度学习基础:9.复现经典网络:LeNet5与AlexNet