類型轉換
類型判斷
我們可以通過 is
來判斷1個實例是不是屬于指定類或其子類,功能類似以 OC
中的 isKindOfClass
。
我們通過1個簡單的例子演示1下:
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