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如果。请使用普通的可选类型。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Swift学习——Swift解释特定的基础(七)相关推荐
- swift使用mysql教程,Swift学习教程之SQLite的基础使用
前言 在我们的日常开发中,经常会遇到用户断网或者网络较慢的情况,这样用户在一进入页面的时候会显示空白的页面,那么如何避免没网显示空白页面的尴尬呢?答案就是:先在网络好的时候缓存一部分数据,这样当下次网 ...
- 零基础使用Swift学习数据科学
概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...
- 全面的Swift学习资料整理
资料1 ---教程类 官方文档中文翻译http://wiki.jikexueyuan.com/project/swift/Github上的地址点我 Using Swift with Cocoa and ...
- 学习Swift:经验丰富的开发人员指南
因此,您的老板希望您学习iOS应用开发. 或者,也许您有一个要处理的应用程序侧项目. 你从哪里开始? 学习新平台和编程语言可能会令人生畏. 即使您尝试学习基础知识,也会不断发布新技术,从而很难保持最新 ...
- swift 学习(一)
swift学习 一.基础部分 1. 常量(let) 变量(var) swift能够自己推断变量的类型,可以不用写变量的类型 let test = "你好,世界!!" let tes ...
- Swift中文教程(一)基础数据类型
基础类型 虽然Swift是一个为开发iOS和OS X app设计的全新编程语言,但是Swift的很多特性还是跟C和Objective-C相似 . Swift也提供了与C和Objective-C类似的基 ...
- Apple Swift学习资料汇总
[更新]Apple Swift学习资料汇总 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 » 今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第 ...
- Swift 学习总结三:数组,字典,枚举,闭包, 函数
数组 ///创建数组//创建某一类型的含有n个初始元素的数组var array1 = [Int](repeating: 5, count: 3)//创建某一类型空数组var array2 = [Int ...
- 汇集了很多swift 学习指南
https://github.com/ipader/SwiftGuide 1,059 Unstar 7,294 Fork1,966 ipader/SwiftGuide Code Issues 0 ...
最新文章
- java 中文分词 比较_中文分词工具评估:chinese-segmentation-evaluation
- uipath sequence传递参数_多孔材料测试及声学参数识别(中)_多孔材料声学参数正向识别...
- canvas并查集画随机迷宫
- 博客园里如何防垃圾评论
- 微软杀毒软件 Microsoft Defender 将发布 Linux 版本
- 程序员如何解决并发冲突的难题?
- 菜鸟学Linux 第030篇笔记 yum使用,源码编译安装
- 一些自己使用VS2015的心得
- 《我的祖国》正确英译应该是《The Evercountry, Mine》
- 与近似比固定算法的高性能算法
- 从源码理解Bean的生命周期执行顺序
- java中的抽象工厂模式
- 一个新手学习python、pys60的感受
- win10浏览器html乱码,win10系统浏览器字体乱码的解决方法
- 缓冲区溢出基础实践(二)——ROP 与 hijack GOT
- 预告:揭秘7*24小时用数学解码交易的神秘玩家,量化交易者——TokenInsight对话首席...
- switch服务器帐户注销,堡垒之夜NS版Guest账号怎么更换_Guest账号退出更换方法介绍...
- 卷积层的dropout - dropblock
- 简单的flask+nginx项目助你开阔思路
- 上班划水神器:一个可以在控制台玩斗地主项目!
热门文章
- centos 7安装 navicat
- c++ vector向量直接赋值_vector-Jacobian product 解释 ---- pytorch autograd
- linux如何给用户加sudo权限,如何在Linux环境为用户添加sudo权限
- java反射类带构造函数_java中反射类的加载和构造函数
- angular 定义对象_angular – 使用对象定义定义FomGroup
- [k8s] 第五章 Pod详解
- iOS NSRunloop 详解
- java docx word api_javadoc生成word接口文档
- 8年面试官问到:数据库自增 ID 用完了会咋样?
- ajax异步后台存放购物车表,jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)...