2012年6月2日土曜日

わたしのScalazプログラミング

Scalaはオブジェクト指向言語なのですよ。
知ってました?

重要:これから書くコードはとてもメニアックなので参考にしないようにして下さい。

今日は有理数を定義してみます。



加算と減算を追加してみる。


さて、この2つのメソッド、とても似ていますよね。
抽象化してしまいます。


さて、今日の本題はここからです。
この加算と減算を他の数値型に対応させたいとします。
普通はこのようにオーバーロードを使いますよね。


しかし、+や-はメソッド型ではなく、値型なのでオーバーロードは使用できません。
そこで、オーバーロードを使わず、UnionTypesを使って定義します。


これでもまだ問題があります。
Scalaでは、型パラメータをとる関数を値として定義できません。
そこで、関数のようにふるまう型を自分で定義します。


これで+と-の演算を抽象化し、さらに多相に対応しましたね。
めでたしめでたし。

0 件のコメント:

コメントを投稿