|
|||
Forrige < |
Innhold ^
|
Neste >
|
modulen Comparable |
|
Comparable
mikses inn i klasser hvor objektene kan sammenlignes og ordnes i en rekkefølge.
Klassen må definere <=>
operatoren, som sammenligner mottakeren med et annet objekt og returnerer -1, 0 eller +1 alt etter hvorvidt mottakeren er mindre enn, lik eller større enn det andre objektet.
Comparable
bruker <=>
til å implementere de tradisjonelle sammenligningsoperatorene
(<
, <=
, ==
,
>=
, og >
) samt metoden between?
.
class SizeMatters
|
||
include Comparable
|
||
attr :str
|
||
def <=>(anOther)
|
||
str.size <=> anOther.str.size
|
||
end
|
||
def initialize(str)
|
||
@str = str
|
||
end
|
||
def inspect
|
||
@str
|
||
end
|
||
end
|
||
|
||
s1 = SizeMatters.new("Z")
|
||
s2 = SizeMatters.new("YY")
|
||
s3 = SizeMatters.new("XXX")
|
||
s4 = SizeMatters.new("WWWW")
|
||
s5 = SizeMatters.new("VVVVV")
|
||
|
||
s1 < s2
|
» |
true
|
s4.between?(s1, s3)
|
» |
false
|
s4.between?(s3, s5)
|
» |
true
|
[ s3, s2, s5, s4, s1 ].sort
|
» |
[Z, YY, XXX, WWWW, VVVVV]
|
instansmetoder | ||
Sammenligninger |
anObject < otherObject -> true eller false
anObject <= otherObject -> true eller false
anObject == otherObject -> true eller false
anObject >= otherObject -> true eller false
anObject > otherObject -> true eller false
|
Sammenligner to objekter basert på mottakerens <=> metode.
|
between? |
anObject.between?( min, max )
-> true eller false
|
Returnerer false hvis anObject <=> min er mindre enn null eller hvis
anObject <=> max
er større enn null. Hvis ikke returneres
true .
|
Forrige < |
Innhold ^
|
Neste >
|