swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
2017-10-19 11:56
726 查看
声明几个类:
1,is 用来做类型检查
2, as 用来做类型转换(注:如果不确定类型转换能否成功,可以在 as 后面加问号 “?”)
3,AnyObjective:代表任何class类型的对象实例
4, Any:范围更广,代表处函数外任何类型的实例
打印如下:
//动物类 class Animal{ } //陆地动物类 class terricole: Animal { } //海洋动物类 class SeaAnimals: Animal { }
1,is 用来做类型检查
let cat = terricole() let fish = SeaAnimals() let arr = [cat,fish] for anima in arr { if anima is terricole{ print("这是陆地动物") }else if anima is SeaAnimals{ print("这是海洋动物") } }
2, as 用来做类型转换(注:如果不确定类型转换能否成功,可以在 as 后面加问号 “?”)
for animas in arr { if let c = animas as? terricole{ print("这是陆地动物") }else if let w = animas as? SeaAnimals{ print("这是海洋动物") } }
3,AnyObjective:代表任何class类型的对象实例
let dogs = terricole() let shark = SeaAnimals() let arrs:[AnyObject] = [dogs,shark] for animaes in arrs { if let d = animaes as? terricole{ print("这是个爬行动物") }else if let e = animaes as? SeaAnimals{ print("这是个水生动物") } }
4, Any:范围更广,代表处函数外任何类型的实例
var myAry:[Any] = [Any]() myAry.append(1) myAry.append("hero11223") myAry.append(terricole()) myAry.append(SeaAnimals()) print("\(myAry)") for any in myAry { switch any { case let any as Int: print("这是个int类型") case let any as String: print("这是个String类型") case let any as terricole: print("这是个陆地动物类型") case let any as SeaAnimals: print("这是个水生动物类型") default: print("这是个未知类型") } }
打印如下:
相关文章推荐
- swift基础(十):类型检查操作符is、类型转换操作符as(包括!及?的区别)、AnyObject和Any类型
- Swift 类型的检査与转换(is,as,AnyObject,Any)
- Swift 类型转换is, as, Any, AnyObject(十二)
- 转:《Effective C#》Item 3:使用as和is操作符来做类型转换
- Swift开发之 as、as!、as?三种类型转换操作符使用详解
- 《Effective C#》Item 3:使用as和is操作符来做类型转换
- Swift开发之 as、as!、as?三种类型转换操作符使用详解
- Swift入门教程13-类型转换is as any anyobject
- 《Effective C#》Item 3:使用as和is操作符来做类型转换
- Swift开发之 as、as!、as?三种类型转换操作符使用详解
- 《Effective C#》Item 3:使用as和is操作符来做类型转换
- Effective C# 使用as和is操作符来做类型转换
- Swift - 类型判断is 与 类型转换as
- Swift as、as!、as?三种类型转换操作符使用详解
- Swift - as、as!、as?三种类型转换操作使用一览
- 类型转换中as、is的使用
- 浅谈类型转换操作符is/as
- as、as!、as?三种类型转换操作符使用详解
- Swift入门(十一)——类型转换与is、as操作
- swift:类型转换(is用作判断检测、as用作类型向下转换)