美文网首页iOS-Swift
swift中as 、as! 、as? 、is

swift中as 、as! 、as? 、is

作者: 某个胖子 | 来源:发表于2017-02-27 11:31 被阅读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 。

相关文章

网友评论

    本文标题:swift中as 、as! 、as? 、is

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