您的位置:首页 > 移动开发 > Swift

swift 学习计划(一)解包、隐式解包的可选变量

2016-04-23 00:00 393 查看
摘要: 解包、隐式解包的可选变量

解包(!的用法)

· 可选类型在每次访问的时候 都会提取并检测它的值是否存在,但有时候根据程序结构就可以推断 可选量在首次赋值后 必然存在值,这时候,就不需要每次验证值是否存在,如果确定一个可选量的值一定存在,那么我们使用!进行解包获取它的值,或者使用Optional Binding

let possibleString : String? = "An optional string"
print(possibleString)                       //解包,确定possibleString的值一定存在,不需要每次都验证他的值是否存在

let stringValue = possibleString!.hashValue //必须解包,才能获取可选量的属性或者方法,否则会出现如下异常信息
//Value of optional type 'String' not unwrapped,did you mean to use "!" or "?"

//Optional Binding,等价于上面一行
if let value = possibleString{
let stringvalue = value.hashValue
}


隐式解包的可选类型

· 把 隐式解包可选类型 当成自动解包的可选类型。即不是每次使用的时候,在变量/常量后面加!,而是直接在定义的时候加!,这些可选量定义为隐式解包的可选量(implicitly unwrapping optional)。

· 隐式解包的可选量的声明格式为:在希望标为可选的类型名称后面,用感叹号!代替问号?

· 隐式解包的可选类型主要用在一个变量/常量在定义瞬间完成之后值一定会存在的情况。主要用在类的初始化过程中。

let assumedString  : String! = "An implicitly unwrapping optional string"
print(assumedString)
print(assumedString.hashValue)


总结:!的使用场景

1· 强制对 可选量 进行解包

2· 声明 隐式解包的可选类型的时候,一般用于类中的属性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息