首页 > 代码库 > [Swift]Day12:类型转换
[Swift]Day12:类型转换
类型转换
类型判断
我们可以通过 is
来判断一个实例是否属于指定类或者其子类,功能类似以 OC
中的 isKindOfClass
。
我们通过一个简单的例子演示一下:
class A {
}
class B: A {
}
class C: A {
}
var array = [B(),A(),C(),A()] // [A]
for item in array {
if item is B {
println("B") // 1 time
}
if item is C {
println("C") // 1 time
}
if item is A { // ERROR! ALWAYS TRUE
println("C") // 1 time
}
}
向下转型
可以用类型转换操作符 as
尝试将某个实例转换到它的子类型。转换没有真的改变实例或它的值。潜在的根本的实例保持不变;只是简单地把它作为它被转换成的类来使用。
比如下面这段代码:
class A {
}
class B: A {
}
class C: A {
}
var array = [B(),A(),C(),A()] // [A]
for item in array {
if let aB = item as? B {
println("aB") // 1 time
}
if let aC = item as? C {
println("aC") // 1 time
}
}
Any 和 AnyObject
Swift为不确定类型提供了两种特殊类型别名:
- Any 可以表示任何类型,除了方法类型(function types)。
- AnyObject 可以代表任何class类型的实例。
References
- TypeCasting
[Swift]Day12:类型转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。