Swift 中的 as、as! 和 as?
2019-12-31 本文已影响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")
}