swift中as 、as! 、as? 、is
2017-02-27 本文已影响56人
某个胖子
- as
- 从子类对象转换为父类对象,向上转型使用
- 消除二义性,数值类型转换
let num1 = 42 as CGFloat
let num2 = 42 as Int
let num3 = 42.5 as Int
let num4 = (42 / 2) as Double - switch语句中进行模式匹配
如果不知道一个对象是什么类型,你可以通过switch语法检测它的类型,并且尝试在不同的情况下使用对应的类型进行相应的处理。
switch animal {
case let cat as Cat:
print("如果是Cat类型对象,则做相应处理")
case let dog as Dog:
print("如果是Dog类型对象,则做相应处理")
default: break
} - as!
父类对象转为子类对象,向下转型。由于是强制类型转换,如果失败会有runtime错误。 - as?
向下转型。但as?如果转型不成功会返回一个nil对象。成功返回可选类型(optional),需要开发人员拆包。
根据as?转型失败也不会有runtime错误的特性,因此对于不能100%转型成功的类型转换使用as?。 - is
判断某个对象是否是某个特定类的对象。类似OC的 isKindOfClass 。