Swift入门教程12-可选链
来源:互联网 发布:建军大业知乎 编辑:程序博客网 时间:2024/06/06 15:47
可选链
原创Blog,转载请注明出处
我的博客地址
http://blog.csdn.net/hello_hwc
可选链提供一个一种可选的方式访问对象的属性、方法、下标脚本,可选链的返回值一定是可选类型。
优点:替代强制解析(符号!,例如instance.location!.y),因为强制解析nil的值会导致运行期错误
我的心得:对一个链式调用,比如instance.Frame.Origin.x等很长的调用,对可能是nil的部分加上?
例如,frame和Origin可能为nil,则这么使用instance.Frame?.origin?.x
可选链的特点:中间有一次可选的值为nil,那么整个可选链失效,返回nil
举个简单的例子就明白了
class A{var varA:B?}class B{var varB:C?var varBArray = [D]()subscript(index:Int)->D?{if(index < varBArray.count){return varBArray[index]}else{return nil}}}class C{var varC:String = "from C"func printC(){println(varC)}}class D{var varD1:Int = 10var varD2:E = E()} class E{func printE(){println("from E")}}var instance = A()
一、通过可选链调用属性
备注:由于返回可选类型,要用if let这样的句式隐式解析
if let temp = instance.varA?.varB?.varC{println(temp)}
二、通过可选链调用方法
instance.varA?.varB?.printC()
三、通过可选链调用下标脚本
if let temp = instance.varA?[5]?.varD1{println(temp)}
这里解释下为什么这么用
instance.varA?[5]是用可选链访问下标脚本,返回D?,然后对返回的D?再通过可选链访问,搜易访问的时候是 instance.varA?[5]?.varD1
四、长的可选链调用
instance.varA?[5]?.varD2.printE()
8 0
- Swift入门教程12-可选链
- Swift 可选链(十五)
- Swift-可选链2
- Swift(十七、可选链)
- swift可选链
- Swift 可选链
- 16.2 Swift可选链
- Swift 可选链
- Swift-可选类型和可选链
- Swift可选链(Optional Chaining)
- Swift学习:2.17 可选链
- Swift-可能值1-可选绑定-可选链
- swift 笔记 (十六) —— 可选链
- [Swift]可选链和ARC引用计数
- Swift学习笔记(十四)可选链
- swift学习-可选链(十七)
- swift可选链和类型转换
- Swift中文教程(十七) 可选链
- zigbee中profile,cluster的认识
- How to install Hadoop 2.2.0
- 使用PopoPWindow当做AlertDialog,控制Dialog的背景大小
- Think Python 学习笔记5:条件与递归
- Huffman Codes
- Swift入门教程12-可选链
- ubuntu eclipse 启动图标是个问号
- 将最小值放到数列最前边
- cin.get()
- 各种文件的十六进制文件头
- 关于VSOnDraw找不到 ,加载文字或者String
- ls -l 命令实现
- Java的Clone简要
- 【巧妙消维DP】【HDU2059】龟兔赛跑