Swift学习——Swift解释特定的基础(七)
2015-08-14 13:22
381 查看
Implicitly Unwrapped Optionals 隐式解析选项
如上所述。可选意味着常数或变量“没有值”。通过可选if声明来推断是否存在值,假设有值析值。
有时候在程序架构中,第一次被赋值之后。能够确定一个可选总会有值。
在这样的情况下。每次都要推断和解析可选值是很低效的,由于能够确定它总会有值。
这样的类型的可选被定义为隐式解析可选(implicitly unwrapped optionals)。
把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选。
当可选被第一次赋值之后就能够确定之后一直有值的时候,隐式解析可选很实用。隐式解析可选主要被用在 Swift 中类的构造过程中,请參考类实例之间的循环强引用。
一个隐式解析可选事实上就是一个普通的可选,可是能够被当做非可选来使用,并不须要每次都使用解析来获取可选值。以下的样例展示了可选String和隐式解析可选String之间的差别:
你能够把隐式解析可选当做一个能够自己主动解析的可选。
你要做的仅仅是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。
注意:假设你在隐式解析可选没有值的时候尝试取值。会触发执行时错误。和你在没有值的普通可选后面加一个惊叹号一样。
你仍然能够把隐式解析可选当做普通可选来推断它是否包括值:
注意:假设一个变量之后可能变成nil的话请不要使用隐式解析选项。假设你需要推断一个变量的生命周期是否nil如果。请使用普通的可选类型。
如上所述。可选意味着常数或变量“没有值”。通过可选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和OC混用
- Chapter 17 Core Data iOS 8 -Swift Programming cookBook 读书笔记
- swift 字符串和字符相关
- swift -NavigationController,代理传值
- swift -UIView的使用
- swift -类的定义及使用
- swift -结构体
- swift -函数、函数指针
- Swift入门(九)——String与Int、Double、Float等数字相互转换
- Swift爬行篇-- UIButton
- Swift- 枚举中的rawValue和hashValue
- swift-08-使用键值对儿统计字符在字符串中出现的次数
- swift-08-使用键值对儿统计字符在字符串中出现的次数
- swift-07-使用for-in 遍历数组
- swift-08-元组分解和数组
- swift-07-使用for-in 遍历数组
- swift-08-元组分解和数组
- swift 常用代码
- The Swift Programming Language (基础部分)
- Ray Wenderlich的swift教程04--布局,添加图片,音频