宇宙船演算子

Ruby には比較を行う <=> という演算子があります。sort メソッド等は内部でこの演算子を利用して値の比較を行っているので、自作クラスにこの演算子を定義してオブジェクトの大小関係を明らかにすることが出来るようにしておけば、配列に入れた自作クラスを sort するようなことができるわけですね。*1
例えば以下のように使うわけです。


class Foo
def initialize(value)
@value = value
end

def <=>(param)
@value <=> param.value
end
attr_reader :value
end

array = [Foo.new(4),Foo.new(1),Foo.new(2),Foo.new(9),Foo.new(3)]
array.sort.each do |e|
puts e.value
end

この演算子は、スターウォーズに出てきた帝国軍の戦闘機にちなんで宇宙船演算子と呼ばれるわけですが、ここは日本のシューティングゲーマーとしてジムダ演算子と呼ぶことを提案してみたいと思いますがどうでしょう?*2

*1:Duck Typing ってこういうことよね?

*2:ラムダ関数みたいで流行るかもしれない