概要
Rubyの組み込みライブラリのComparableモジュールについて
Comparableモジュール概要
比較演算を許すクラスのための Mix-in。
このモジュールをインクルードするクラスは、
基本的な比較演算子である <=> 演算子を定義している必要がある。
self <=> other は
self が other より大きいなら正の整数
self と other が等しいなら 0
self が other より小さいなら負の整数
self と other が比較できない場合は nil
をそれぞれ返すことが期待されている。
Comparableの各メソッドのサンプル
# encoding: Windows-31J class LargeMediumSmall include Comparable # =>ComparableをMix-in attr_accessor:largeness SMALL = 1 MIDIUM = 2 LARGE = 3 def initialize(largeness) @largeness = largeness end # Comparable用に<=>を実装 def <=>(other) case other.largeness when SMALL,MIDIUM,LARGE then return self.largeness <=> other.largeness else return nil end end end large = LargeMediumSmall.new(LargeMediumSmall::LARGE) midium = LargeMediumSmall.new(LargeMediumSmall::MIDIUM) small = LargeMediumSmall.new(LargeMediumSmall::SMALL) puts large < midium # =>比較演算子 large < midium = false puts large > midium # =>比較演算子 large > midium = true puts large <= midium # =>比較演算子 large <= midium = false puts large >= midium # =>比較演算子 large >= midium = true puts large == midium # =>比較演算子 large == midium = false puts midium.between?(small,large) # =>範囲 midiumはsmallとlargeの範囲に入るか = true puts large.between?(small,midium) # =>範囲 largeはsmallとmidiumの範囲に入るか = false puts midium.between?(small,midium) # =>範囲 midiumはsmallとmidiumの範囲に入るか = true
出力
false true false true false true false true