一.as
1,派生类转换基类。
2,消除二义性,数值类型转换
let age = 28 as Int let money = 20 as CGFloat let cost = (50 / 2) as Double
3,switch 语句中进行模式匹配
func separateStudentsAndTeacher (person:Person) {
switch person {
case person as Students:
print("是学生类,打印学生成绩单")
case person as Teacher:
print("是教师类,打印教师工资单")
default:
break;
}
}
二,as?
as? 和 as! 操作符的转换规则完全一样。但 as? 如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值。由于 as? 在转换失败的时候也不会出现错误,所以对于如果能确保100%会成功的转换则可使用 as!,否则使用 as?
三,as!
向下转型(Downcasting)时使用。由于是强制类型转换,如果转换失败会报 runtime 运行错误。