Type Casting

昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html を読む。

  • Swiftの型キャストは isas演算子
  • protocolをconformしているかどうかにも使える
  • 型検査演算子 is item is Movie
  • 「subclassかどうか」だけど構造体・列挙型でも使える
  • ダウンキャスト演算子 as?as!
  • ダウンキャストは失敗するかもしれないので2つある
  • ダウンキャストが成功するのがnot sureなときは as?を使え
  • ダウンキャストが成功するのがsureなときは as!を使え
  • “if let movie = item as? Movie” は、「itemMovieとしてアクセスしてみて、うまくいったらmovie一時変数にオプショナル格納されてる値を入れてよね」と読む
  • Anyには全ての型のインスタンスが入る。タプルや関数も入る
  • AnyObjectに入るのはクラスのインスタンスだけ
  • switchcaseで型検査する例
    • 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にするようなキャストではない