swift中as 、as! 、as? 、is

  • 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 。

你可能感兴趣的:(swift中as 、as! 、as? 、is)