RubyでJavaで言うところの流れるようなインターフェースまがいクラスを実装してみる
Java界隈ではよく流れるようなインターフェースがどうとかいうけど、Rubyでも同じようなことができる。ということで、ずっとJavaのネタばかり書いてきたので今回はRubyネタで行きます。
実装方法は簡単です。
class CalcClass def initialize(number = 0) @value = number; end def plus(number) @value = @value + number; self; end def minus(number) @value = @value - number self; end def multiply(number) @value = @value * number; self end def divide(number) @value = @value / number; self; end def display() puts @value; self; end end obj = CalcClass.new(10); obj.plus(10).divide(2).multiply(3).minus(3).display();
ポイントはすべてのメソッドでselfを最後にリターンしていることです。
これはJavaで言うところのthisと同じようなもので、最初のobjがレシーバとなり、Rubyでは呼び出されたメソッドがレシーバオブジェクトの参照を保持しています。つまりその参照であるselfを返せば同じような記述が可能ということになります。
プログラムの結果はコンソールに27と表示されて終わる簡単なプログラムです。
まあ、それだけなんですが・・・。