swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与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()
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 4.0 高级-自定义操作符
在Swift语言中,常见的操作符有+.-.*./.>.<.==.&&.||等等,如果不喜欢,你也可以定义自己喜欢的操作符. 操作符类型 中置运算符(infix operat ...
- 苹果新的编程语言 Swift 语言进阶(十三)--类型检查与类型嵌套
一 类型检查 1. 类型检查操作符 类型检查用来检查或转换一个实例的类型到另外的类型的一种方式. 在Swift中,类型检查使用is和as操作符来实现. is操作符用来检查一个实例是否是某种特定类型,如 ...
- javascript 操作符类型隐性转换
javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...
- Swift中的Any 与 AnyObject、AnyClass的区别?
在 Swift 中能够表示 “任意” 这个概念的除了Any .AnyObject以外,还有一个AnyClass. Any.AnyObject.AnyClass有什么区别: AnyObject是一个成员 ...
- [ios][swift]swift中如果做基本类型的转换
在swift中如果做基本类型的转换的?比如Int -> Float(Double)Double -> 保留两位小数String -> IntDouble -> String 有 ...
- 使用instanceof操作符判断对象类型及方法的重载
学习内容: 一.使用instanceof操作符判断对象类型 1.instanceof操作符可以判断一个实例对象是否属于一个类. 语法:对象名 instanceof 类名 2.使用instanceof表 ...
- JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别
ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...
- [ios][swift]Swift类型之间转换
http://www.ruanman.net/swift/learn/4741.html
- Swift中可选类型(Optional)的用法 以及? 和 ! 的区别 (转载博客,知识分享)
本文转载自:代码手工艺人的博客,原文名称:Swift之 ? 和 ! Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之 ...
随机推荐
- css 图标 旋转中
.person-loading .loading-icon{position: absolute;top: 14px;} i.loading-icon{width: 15px;height: 15px ...
- Hadoop 新 MapReduce 框架 Yarn 详解【转】
[转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/] 简介: 本文介绍了 Hadoop 自 0.23.0 版本 ...
- js屏蔽键盘按键
3.1屏蔽键盘所有键 <script language="javascript"> <!-- function document.onkeydown(){ eve ...
- eclipse偶尔会反映迟钝,直接无视其报错
比如,你在web.xml中配置了什么东西,在有的时候不一定就会立即被eclipse察觉到,即便你的配置正确了,甚至重启了几次服务器,它仍然给你报错 比如说,刚才我在web.xml中配置了一个tagli ...
- sqlserver 多排序的问题
sql 执行默认执行排序的第一个字段,如果结果集中含有重复的列的字段,才会按照2...N个字段进行排序,没有重复列多排序无效果
- c++友元函数之---一种特殊的友情
类可以允许其他类或者函数访问它的私有成员,方法是令其他类或者函数成为它的友元.如果类想把一个函数或者类声明成它的友元,只需要增加一条以friend关键字开始的声明语句即可. 友元声明只能出现在类定义的 ...
- JS地毯式学习二
1.递归算法 a. function box(num){if(num<=1){ return 1;}else{ return num*box(num-1);}}alert(box(5)); b. ...
- iOS开发小技巧--取消按钮的选中状态
首先要自定义按钮,并且实现如下方法,对,就是这么实现!!
- DataGridView使用技巧十三:点击列头实现升序和降序排序
DataGridView 列有三种排序模式.每一列的排序模式是通过该列的 SortMode 属性指定的,该属性可以设置为以下的 DataGridViewColumnSortMode 枚举值之一. Da ...
- 15款最好的 jQuery 网格布局插件
如今,大多数网站设计要靠网格系统和布局,这能够提供给设计人员一个方便的途径来组织网页上的内容.网格的设计最常见于报纸和杂志的版面,由文字和图像构成的列组成. 这篇文章给大家分享精心挑选的15款最佳的 ...