溯造型
可以使用型別轉換運算子 as?
和 as!
將變數下載到子型別。
as?
運算子嘗試轉換為子型別。
它可能會失敗,因此它返回一個可選項。
let value: Any = "John"
let name = value as? String
print(name) // prints Optional("John")
let age = value as? Double
print(age) // prints nil
as!
運算子迫使型別轉換。
它不返回可選項,但如果轉換失敗則會崩潰。
let value: Any = "Paul"
let name = value as! String
print(name) // prints "Paul"
let age = value as! Double // crash: "Could not cast value…"
通常使用帶有條件展開的型別轉換運算子:
let value: Any = "George"
if let name = value as? String {
print(name) // prints "George"
}
if let age = value as? Double {
print(age) // Not executed
}