Swift as类型转换操作符使用详解

这里总结一下as、as!、as?这三种类型转换操作符的异同以及使用场景。

1. as使用场合

(1)从派生类转换为基类,向上转型

class Animal {}

class Cat : Animal{}

let cat = Cat()

let animal = cat as Animal

(2)消除二义性,数值转换类型

let num1 = 43 as CGFloat

let num2 = 45.3 as Int

2.as!使用场合

向下转型时使用。由于是强制类型转换,如果转换失败会报runtime运行错误。

class Animal {}

class Cat:Animal{}

let animal:Animal = Cat();

let cat = animal as! Cat

3.as?

as?和as!的使用规则完全一样,但是as?如果转换不成功就会返回一个nil对象。成功的话就返回可选类型值(optional),需要我们拆包使用。

由于as?在转换失败的时候也不会出现错误,所以对于能确保100%会成功的转换可以使用as!,否则使用as?

let animal:Animal = Cat()

if let cat = animal as? Cat{

print("cat is not nil")

}else{

print("cat is nil");

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容