Swift as as! as? 的理解
目前公司项目中用到的 Swift 比较少,所以对 Swift 的理解也很局限。这里把一些放在笔记中的内容整理下分享出来。
as
编译时检测,有两个意思
1、指定文字表达类型
2、upcast(向上转型,转换成其父类类型)
1 | //指定 1 的类型为 CGFloat 类型,既变量 num 为 CGFloat 类型 |
as! as?
运行时检测,downcast(向下转型,转换成其子类类型)
只不过前者是强制解包,解包失败就崩溃
后者是可选类型
1 | //下面代码编译时均不会报错,因为 as! 和 as? 都是运行时检查的 |
1 | class Dog: Animal { |
总结
1、as
在编译时检测,as!
as?
在运行时检测
2、as
可以用来指定文字表达类型以及向上转型
3、as!
as?
用来向下转型,as?
转型后为可选值,as!
相当于在这个可选值上强制解压(可能会导致崩溃)