swiftSwift 相关Swift基础

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

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")
}
上一篇下一篇

猜你喜欢

热点阅读