名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

Scalaスケーラブルプログラミング第3版「第06章 関数型スタイルのオブジェクト」の感想

雑な作業メモです。

やったこととか、学んだこととか

  • 有理数(分数)を表現するクラスを作る
    • そういえばこういうのありがちな題材だけど、作ったことがなかった、他言語に入門する際も最初の素振りとしてやっとこうかな
  • 入力の Assertion を require でやることができる
  • コンストラクタに渡す引数と、フィールドに渡す変数を分けて定義する必要がある
    • 特にメソッドの引数とする場合には、スコープのアクセス権限の関係で必要
  • 自己参照は thisself ではない
  • コンストラクタが別途必要な場合は def this(a: Int) = this(a, 1) のようにできる
    • Javaだと結構こういうコンストラクタ定義とかするので、わかる
  • 加算は def + (引数) みたいなスタイルで表現できる
  • Implicit を使って暗黙的に型変換することができる。なので、型変換をそのスコープ内で定義しておけば、型変換ができる

個人的に目新しかったのは

  • Assertion が充実していて面白い、使い分け墓投げる必要がある
  • 演算子を直に上書きしてるかのようにメソッド定義できる
  • Implicit を使って暗黙的な型変換も定義可能。いろいろ仕込みとかをするハックもあるんだろうな。

感想

言語が変わると書き方も変わりますが、割と直感的にプログラムを実装するための機能がそろっていていい感じだなと思いました。

特に目新しいと思った部分は活用したいですね。あとリンクに張った Effective Scala とか。