? 和 ! 和 as的使用?

作者: 光明程辉 | 来源:发表于2016-01-04 13:31 被阅读33次
Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化!否则会报错!
声明为Optional只需要在类型后面紧跟一个?即可.
“?” 就Optional值.png
上面这个Optional的声明,不是声明了一个Optional的String值。
-1- 而是”我声明了一个Optional类型值.
-2- 它可能包含一个String值,也可能什么都不包含!

-也就是说实际上我们声明的是Optional类型! 而不是声明了一个String类型!

Optional是一个 enum 值,里面有None和Some两种类型。看官方文档!
屏幕快照 2016-01-04 下午12.59.52.png
其实所谓的nil就是Optional.None, 非nil就是Optional.Some, 然后会通过Some(T)包装(wrap)原始值,这也是为什么在使用Optional的时候要拆包(从enum里取出来原始值)的原因.
只要 声明为Optional的,如果不显式的赋值就会有个默认值nil.

Optional值需要拆包(unwrap)后才能得到原来值,然后才能对其操作,那怎么来拆包呢?

! 在具体的操作前添加!符号

每次对这种类型的值操作时,都会自动在操作前补上一个!进行拆包,然后在执行后面的操作.

总结:

“? ” 的几种使用场景:
1.声明Optional值变量
2.用在对Optional值操作中,用来判断是否能响应后面的操作
3.用于安全调用protocol的optional方法
4.使用 as? 向下转型(Downcast)

“!” 大概也有两种使用场景
1.强制对Optional值进行拆包(unwrap)
2.声明Implicitly Unwrapped Optionals值,一般用于类中的属性。

“as”

屏幕快照 2016-01-04 下午1.30.43.png

相关文章

网友评论

    本文标题:? 和 ! 和 as的使用?

    本文链接:https://www.haomeiwen.com/subject/phqahttx.html