第13回名古屋Scala

11/19 に、第13回名古屋Scala勉強会に参加してきました。

  • 27章 オブジェクトを使ったモジュラープログラミング
    • モジュールとしてオブジェクトを捉える
      • Lift とかそうなってる
      • OCaml の(ファーストクラス)モジュールに近い
      • 継承とかも出来る
    • DI
      • 結構普通、そんなにおっきいこと言ってない
      • 外部から依存性注入出来るようにしましょう
        • 高階関数使ってもできる (1個の時)
          • 複数個の時はインタフェースとか作ることが多い
          • 関数はメソッド1つのインタフェース的なもの
    • Java
      • 残念、イラネ、Scala でおkとか
  • 28章 オブジェクトの等価性
    • equals と ==
      • 参照等価、等価、比較
      • 実装する際には、意図しない再帰に注意 (C# ==(A a, object b) 内で、a == null 判定とか)
    • null は Null 型 (Null型 : p196(11章))
    • LSP
      • bleis 先生による LSP 違反の例
      • 値のセマンティクスを持っているクラスを継承可能にしていることがそもそもの問題
        • 個人的には、そのクラスのインスタンスを生成できるクラスは継承を許したくない
      • case class 素敵
        • 継承も出来るっぽい
        • でも継承すると LSP 違反の問題が・・・ (case class なら大丈夫?)
    • hashCode
      • Hashable インタフェース的なもの作って、Hash系データ構造で Hashable 要求すれば、いい感じに hashCode 強制できそうな
      • commons 素敵
      • タプルいい感じ (リストでもおk)
    • 小さめの机を幾つか集めた感じにしていたので、議論が2つくらい同時進行することがあった
      • 学級崩壊に戸惑う担任の北村先生
    • あひさめ君が OCaml を始めるようです
      • よーく君も OCaml を始めたそうです (プログラミングの基礎 読了とか)