Type Casting
昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html を読む。
- Swiftの型キャストは
is
とas
演算子 - protocolをconformしているかどうかにも使える
- 型検査演算子
is
item is Movie
- 「subclassかどうか」だけど構造体・列挙型でも使える
- ダウンキャスト演算子
as?
とas!
- ダウンキャストは失敗するかもしれないので2つある
- ダウンキャストが成功するのがnot sureなときは
as?
を使え - ダウンキャストが成功するのがsureなときは
as!
を使え - “if let movie = item as? Movie” は、「
item
をMovie
としてアクセスしてみて、うまくいったらmovie
一時変数にオプショナル格納されてる値を入れてよね」と読む Any
には全ての型のインスタンスが入る。タプルや関数も入るAnyObject
に入るのはクラスのインスタンスだけswitch
〜case
で型検査する例case 0 as Int:
case let i as Int:
case let x as Double where x > 0:
case let (x, y) as (Double, Double):
case let f as (String) -> String:
Any
にOptionalを入れるには、明にキャストしないと警告になるlet o:Any = Int("123") as Any
intをdoubleにするようなキャストではない