Swiftの勉強をしていて、asが出て来ることが多いので、自分なりに調べてまとめてみました。
参考記事
・https://fukatsu.tech/swift-cast
・https://qiita.com/entry909/items/3c4c9a20bce0c903dc39
・http://blog.andgenie.jp/articles/803
##キャストについて
キャストとは、asという演算子を用いて変数や定数を具体的な型にはめ込むことです。
asについて
asは、演算子の一種で2種類の変換を実行することができます。
- 保証変換
- 強制変換
保証変換
保証変換とは、別の型に変換するときに、コンパイラ可能な場合キャストの成功が保証されるような変換です。
例えば、アップキャストというのがあって、クラスの継承やプロトコルの準拠などの階層関係がある型同士においてキャストを行うものです。
let str = "アイウエオ"
let any = str as Any
強制変換
強制変換とは、変換するときにコンパイラで安全性が保証できないので実行時にエラーを引き起こす可能性があるキャストのことです。この強制変換では、ダウンキャストというものがあります。
ダウンキャストとは
ダウンキャストとは、as!、as?のに種類があって、as!は強制的にコンパイラの安全性を無視してキャストを行います。
let any: Any = "アイウエオ"
let str = any as! String //String型"アイウエオ"
let num = any as! Int //Int型にキャスト失敗(実行時エラー)
as?は、キャスト自体が成功するかわからない時に使います。
成功時はOptional型になり、失敗時はnil型になります。
let any: Any = "アイウエオ"
let str = any as? String //Optional("アイウエオ")
let num = any as? Int //nil