|
|||
| 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 >
|