Swift 类型转换is, as, Any, AnyObject(十二)
/// 父类 class Person {
var name: String
init(name: String){
self.name = name
}
}
/// 子类 class Woman: Person {
var female: String
init(name: String,male: String) {
self.female = male
super.init(name: name)
}
}
/// 子类 class Man: Person {
var weight: String
init(name: String,weight: String) {
self.weight = weight
super.init(name: name)
}
}
let arrays = [
Woman(name: "gzz",male: "she"),Woman(name: "glz",Man(name: "ty",weight: "180"),Man(name: "az",weight: "101"),weight: "102")
] /// arrays 的类型被推断为Person
检查类型(Checking Type)用类型检查操作符( var womanCount = 0
var manCount = 0
for item in arrays{
if item is Woman{
++womanCount
}
if item is Man{
++manCount
}
}
print("womamCount: (womanCount)") // 2
print("manCount: (manCount)") // 3
数组中的每一个 for item in arrays{
if let _ = item as? Woman{
print("woman")
//
}
if let _ = item as? Man{
print("man")
//
}
}
Any 和 AnyObject 的类型转换
let objects: [AnyObject] = [
Man(name: "Xt",Man(name: "Xt1",Man(name: "Xt2",]
因为知道这个数组只包含 for object in objects{
let man = object as! Man
print("man :'(man.name)'")
}
var things = [Any]()
// 添加
things.append(0)
things.append(3.14159)
things.append("hello")
things.append((3.0, 5.0))
things.append(Man(name: "Xt",weight: "171"))
things.append(Woman(name: "Xt1",male: "ll"))
你可以在 for thing in things {
switch thing {
case 0 as Int:
print("zero as an Int")
case let someDouble as Double where someDouble > 0:
print("a positive double value of (someDouble)")
case let someString as String:
print("a string value of "(someString)"")
case let (x,y) as (Double,Double):
print("an (x,y) point at (x),(y)")
case let man as Man:
print("Man: (man.name)")
case let woman as Woman:
print("woman: (woman.name)")
default:
print("something else")
}
}
交流群: 498143780 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |