アップキャスト
・型の階層で「下位の型」を「上位の型」に変換すること。
・as
を使う。安全に行える。
let string = "hello" as Any // String型をAny型へアップキャスト
ダウンキャスト
・型の階層で「上位の型」を「下位の型」に変換すること。
・as?
とas!
を使う。
as?
によるダウンキャスト
・失敗時: nil
を返す(安全)。
・注意点: 結果がOptional型になるので注意。
let any = 1 as Any
let num = any as? Int // 成功 → Optional(1)
let str = any as? String // 失敗 → nil
as!
による強制ダウンキャスト
・失敗時: 実行時エラーが発生(危険)。
・メリット: Optionalを扱う必要がない。
let any = 1 as Any
let num = any as! Int // 成功
let str = any as! String // 失敗 → 実行時エラー
まとめ
種類 | 説明 | 失敗時 |
---|---|---|
アップキャスト |
as を使う。安全に型を変換する。 |
なし |
ダウンキャスト |
as? → nil を返す。安全。 |
nil を返す |
as! → 実行時エラーが発生する。危険 |
実行時エラー |