Swift_?|Swift_? 和 ! 的使用场景
?的几种使用场景:
1.声明Optional值变量理解:
2.用在对Optional值操作中,用来判断是否能响应后面的操作
3.用于安全调用protocol的optional方法
4.使用 as? 向下转型(Downcast)
【Swift_?|Swift_? 和 ! 的使用场景】
?
.在使用Optional值的时候需要在具体的操作,比如调用方法、属性、下标索引等前面需要加上一个?
(同上面的2), 如果是nil值,会跳过后面的操作不执行 / 如果有值,就会拆包(unwrap),然后对拆包后的值执行后面的操作,来保证执行这个操作的安全性,比如:let hashValue = https://www.it610.com/article/strValue?.hashValue
strValue是Optional的字符串,如果strValue是nil,则hashValue也为nil,如果strValue不为nil,hashValue就是strValue字符串的哈希值(其实也是用Optional wrap后的值)
!
.在使用时, 表示自动解包, 自己不会去判断有没有值, 直接解包, 这样会发生什么?答: strValue不小心为nil的话,就会出错,crash掉。
let hashValue = https://www.it610.com/article/strValue!.hashValue
假设我们知道strValue一定是非nil的,就能直接加上!,强制拆包(unwrap)并执行后面的操作。
当然我们可以在使用之前手动添加判断
if strValue {
let hashValue = https://www.it610.com/article/strValue!.hashValue
}```###!大概也有两种使用场景
1.强制对Optional值进行拆包(unwrap)
2.声明Implicitly Unwrapped Optionals值,一般用于类中的属性
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 急于表达——往往欲速则不达
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河