可选链(Optional Chaining)

我们都知道“可选型”是什么。那么可选链又是什么,举个样例解释一下:
struct MyName{
var name
}
struct MyInfo {
var myName:MyName? = MyName()
}
class MyClass {
var structInstance: MyInfo? = MyInfo()
}
这里有两个结构体和一个类,当。这个类实例化的时候:
var myInstance = MyClass()
全部的可选属性都会被初始化,由于我写了默认值。
if let name = myInstance.info?.myName?.name {(感谢 swift技术交流第一平台(355277)的群友 周老湿(974871365) 指出成员名错误)
if let name = myInstance.structInstance?.myName?

.name

{

println(name)
} else {
println(“some info is nil")
}
在红字部分,能够看到,是使用的一连串的可选值。

这就叫做可选链。

这里我还使用了一个非常早的笔记中提到的  if let name = 可选型 {……} 这种语法。
这是由于:在可选链中,不论什么一个环节的可选型解析失败(值为nil),那么整个可选链的结果为nil。
当然,事实上我们可能会想在第一个环节使用“!”来让可选链返回一个确切的值,而不是可选值,比方:
let name = myInstance.info!.myName!.name
但,大多数情况,我们并不知道有谁会来改代码。有谁会改变某个封装的实现。假设错误的解析了一个可选值的话(一个值为nil的可选型),那么带来的后果仅仅有一个,我们的程序会崩掉。。。

。所以,千万不要这么干!

!。!

这章就说了这么点事儿。。

。。

至于什么调用函数,使用下标,不须要再说了,逻辑能力正常的人类。都直接就会用了。

版权声明:本文博主原创文章,博客,未经同意不得转载。

swift 注意事项 (十六) —— 可选链相关推荐

  1. IT十年人生过客-二十六-区块链

    最近太忙了,先写概要,后续更新 锋哥离职 嗯,CTO离职了 跟锋哥聊了聊 大于来了 风格切换 跟新领导聊 葛大爷 我和翠会龙博苑三区了,回去找她小伙伴吃个饭 葛大爷说正在找工作 找了几家不太满意 我介 ...

  2. Swift之深入解析可选链的功能和使用

    一.什么是可选链? 可选链(Optional Chaining)是一种可以请求和调用属性.方法和子脚本的过程,用于请求或调用的目标可能为nil. 可选链返回两个值: 如果目标有值,调用就会成功,返回该 ...

  3. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛图片显示软件发布及线上赛注意事项

    简 介: 本文对于第十六届全国大学生智能车竞赛视觉AI组线上比赛的识别任务软件以及相关比赛流程注意事项进行总结. 关键词: 智能车竞赛,视觉AI组 §01 积分分值   根据 第十六届全国大学生智能车 ...

  4. 《从零开始学Swift》学习笔记(Day 26)——可选链

     Swift2.0学习笔记(Day 26)--可选链 原创文章,欢迎转载.转载请注明:关东升的博客 在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型 ...

  5. Swift中文教程(十七) 可选链

    可选链(Optional Chaining)是一种可以请求和调用属性.方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空(nil).如果自判断的目标有值,那么调用就会成功:相反,如果选 ...

  6. swift 可选链_Swift可选链

    swift 可选链 Swift Optional Chaining is a very useful feature. Optionals are a type in Swift that wrap ...

  7. abbex 区块链学院如何交易之 第十六章 交易计划

    第十六章 交易计划 Abbex 规则运用的铺垫没有一个交易计划,再好的规则也无从施展.怎样给自己制定完善的交易计划?幽灵没有忘记弥补这个重要的环节. 幽灵决定,把在<期货杂志>论坛发表的内 ...

  8. 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理

    第二十六章.Linux核心编译与管理 最近升级日期:2009/09/18 我们说的 Linux 其实指的就是核心 (kernel) 而已.这个核心控制你主机的所有硬件并提供系统所有的功能,所以说,他重 ...

  9. ES6~ES12——Array Includes、Object values、Object entries、Object fromEntries、flat、flatMap、空值合并运算符、可选链等

    一.ES7 - Array Includes 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1. 在ES7中,我们可以通过include ...

最新文章

  1. [9-1]磁盘基本知识、分区基本概念
  2. IT公司100题-10-翻转句子中单词的顺序
  3. linux shell的单行多行注释
  4. 线程池 Future 带返回结果
  5. 倾斜摄影测量无人机炸机的八大原因及“炸机”预防措施
  6. Navicat提示“failed to save password error code”的解决办法
  7. Atitit. Dwr 抛出异常error解决方案
  8. OSChina 周日乱弹 ——为了下一代也要努力找个漂亮的媳妇
  9. vue实现li列表的新增删除和修改
  10. 先有鸡还是先有蛋?应用程序开发与安全
  11. [UIView numberofRowsInSection]unrecognized selector sent to instance 0x1808bef0 错误
  12. 袁腾飞的两宋风云读后感
  13. ai人工智能对话了_对话人工智能模型
  14. Ayla CEO大卫.弗里德曼:你应该了解的五种物联网大数据!
  15. 图片翻译文字软件哪个好?图片翻译软件推荐。
  16. 解决m3u8视频合并问题
  17. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造...
  18. 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客
  19. 李开复的《AI·未来》是本好书?我不见得
  20. java park_park和unpark

热门文章

  1. Redis 数据类型之(底层解析)
  2. Lock与synchronized 的区别
  3. pip和conda 换清华源
  4. Python面向对象---类的基本使用
  5. Spring学习11之AOP
  6. mongodb学习篇
  7. 第六天2017/04/11(1:结构体链表基础和相关经典操作)
  8. 大白话系列之C#委托与事件讲解大结局
  9. Java 单例模式探讨
  10. 学习笔记——Maven pom.xml配置详解