美文网首页swiftSwift 相关Swift基础
Swift 中的 as、as! 和 as?

Swift 中的 as、as! 和 as?

作者: 大成小栈 | 来源:发表于2019-12-31 11:57 被阅读0次

1. 关于as

  • 将子类转换为基类
class Auto {}

class Car: Auto {}

let  car = Car()
let truck = car as Auto
  • 数值类型转换
let number1 = 56 as Int
let number2 = 5.092 as CGFloat
  • switch 中的模式匹配

Swift中可以通过switch语法检测变量的类型,并且在不同类型下来进行相应的处理:

switch Auto {
     case let car as Car:
           print("这里是Car类型对象")
     case let truck as Truck:
           print("这里是Truck类型对象")
     default: break
}

2. 关于as!

向下强制类型转换,如果转换失败会报错

class Auto {}
class Car: Auto {}
let auto: Auto = Car()
let car = auto as! Car

3. 关于as?

as?也是向下强制类型转换,只是as?在转换失败之后会返回nil对象,转换成功之后返回一个可选类型(optional),需要我们拆包使用。

let auto: Auto = Car()
if let car = auto as? Car {
   print("这是Car")
}
else {
  print("这不是Car")
}

相关文章

网友评论

    本文标题:Swift 中的 as、as! 和 as?

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