Swift自習日記 #4

  • 「Objective-Cでは、複数のカテゴリで同名のメソッドを実装するとどちらが呼ばれるかが仕様上未定義」
    …という話題をいくつかのblogで拝見した覚えがあるのですが、Swiftの拡張に名前が無くなったのはそのせいかもね?
    さらに、Swiftの拡張では既存のメソッドやプロパティ、イニシャライザはオーバーライドできないとLanguage ReferenceのExtension Declarationに書いてあるので同様の問題は心配無いはず。はず。
    「カテゴリみたいに用途別に名前を付けた〜い」という場合はtypealiasでClassname_categorynameみたいな別名を付ければ良いってことか。
  • Swiftのソースを読み慣れていないので、「ネストしたクラス定義」と「getキーワードを省略したゲッタ付きクラス(スタティック)プロパティ定義」が紛らわしい〜ん。ver/letキーワードがあるのが後者と考える事にするよ。
  • オプショナル型の変数/プロパティ等にアクセスするときの構文から連想すると、型のダウンキャストは
    「as?」(オプショナル値を返す)と「as」(強制)よりも
    「as」(オプショナル値を返す)と「as!」(強制)
    の方がしっくり来そうな感覚がありますが、前者が採用されているのは構文解析玄人的な視点からの深〜い理由があったりするんでしょうかね。
    使う側からすれば、後者の方が「ランタイムエラーが発生したら「!」が後置されてるところを一律要チェックや!」と怪しいところを特定しやすくて嬉しい気がしますが…


©  かろでん☆みゅ〜あ 2012