あけましておめでとうございます。
年明け最初の記事は、Scalaの勉強ということでimplicitを使ってみた話。
Javaの実装でtoHoge()な書式が好きなので、interfaceを使って実現をするのですが、
既存のクラスに関してはそれができません。
その具体例と、対応方法は次のコード。
Outputableを実装したクラスを受け取って出力を行うクラスです。
自前のクラスに関しては、implementsすれば好き勝手に実装ができますね。
そして出力用のコード。
しかし、既存のクラスに関してはそうはいかないので、ラッパークラスを
用意することになります。
呼び出し元も、新しいクラスを呼び出したりで面倒くさい。
Javaという言語は面倒臭いですん。
さて、Rubyではもっと柔軟な感じにいけて、クラスの定義を
コードの途中で再開させることができるのです。
まずは、自前のクラスに対しての実装。
そして、既存のクラスの拡張。
Rubyって便利。
そして、最後にScala。暗黙的変換のimplicitキーワードを使ったメソッドを
用意することで、コンパイラが自動的に適した型に変換するメソッドを呼び出して
くれるのです。
implicitを使って変換を行う例。
実に気持ちがいい。呼び出し元は、クラスの変換とか意識しなくていいんですよ。
ただ、Javaでも型変換にtoHoge()な実装をしない
コードをたくさん見てきたので、ちょっとアレ。
今年も、綺麗なコードを求めてがんばりますね。
さて、今回参考にした書籍は次。
あと、最近はPlay frameworkを使ってScalaを
勉強してます。