对于Swift中的关键字’as’来说一共有三种方式
类型 | 使用方式 |
---|---|
‘as’ | 向上转型,数值类型直接转换,检测类型等 |
‘as!’ | 一般用于向下转型,但是转型失败会报runtime错误 |
‘as?’ | 比’as!’好在如果转换失败不会报runtime错误,会返回一个nil对象,转化成功会返回一个Optional类型的值,使用该值需要拆包 |
1.向上转型
1. 父类Person
class Person: NSObject {
//构造函数等省略
}
2. 子类Student
class Student: Person {
//构造函数等省略
}
3. 进行类型转换
let student = Student()
//类型转换(向上转型)
let Person = student as Person
2.数值类型转换
// //如果直接=10.那么一定是一个Int类型(swift自动类型判断,swift不支持隐式类型转换,这里不赘述了)
// let num1 = 10
//我们可以使用as来使num变成其他类型
let num2 = 10 as float
let nume3 = 3.4 as Int
3.模式匹配
if let student as Student {
print(student是Student类的对象);
}
这种模式匹配是否比OC中的
-(BOOL)isKindOfClass;
等能够判断类型的方法来得简单得多?