Die Programmiersprache Ruby

Blog| Forum| Wiki  

Das Modul Comparable ist ein Mixin für Klassen, die Vergleichsoperatoren benötigen. Es ist nach Enumerable das am häufigsten eingemixte Modul.

Comparable definiert die Methoden <, <=, ==, >=, > und between? basierend auf der Methode <=> der einmixenden Klasse. Die Datei tree.rb dient als Beispiel, sie lautet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Tree
  include Comparable
  
  #Creates a new Tree. Pass in the desired height im meters. 
  def initialize(height)
    @height = height.to_f
  end
  
  #Compares the Tree with another based on its height. 
  def <=>(obj)
    @height <=> obj.to_f
  end
  
  #Returns the height of the Tree. 
  def to_f
    @height
  end
  
end

Instanzmethoden

Vergleichsmethoden

Anwendung einObject < einAnderesObject ==> true oder false

einObject <= einAnderesObject ==> true oder false
einObject > einAnderesObject ==> true oder false
einObject >= einAnderesObject ==> true oder false
einObject == einAnderesObject ==> true oder false

Argumente
  • einAnderesObject: Das Objekt, mit dem zu vergleichen ist.
Beschreibung Diese Methoden vergleichen self mit einem anderen Objekt, basierend auf der <=>-Methode von self.
Rückgabewert true oder false, je nachdem.
Beispiel
1
2
3
4
5
6
7
require "tree.rb" #Siehe Einführung
bonsai = Tree.new(1.5)
mammutbaum = Tree.new(50)

puts mammutbaum > bonsai #=> true
puts mammutbaum == 50 #=> true
puts bonsai >= mammutbaum #=> false



between?

Anwendung einObject.between?( min , max ) ==> true oder false
Argumente
  • min: Minimalwert.
  • max: Maximalwert.
Beschreibung Vergleicht self mit min und max.
Rückgabewert Wenn ((self <=> min) < 0) || ((self <=> max) > 0), dann wird false zurückgegeben, sonst true.
Beispiel
1
2
3
4
5
6
7
8
puts 3.between?(2, 4) #=> true

require "tree.rb" #Siehe Einführung
bonsai = Tree.new(1.5)
mammutbaum = Tree.new(50)
birke = Tree.new(7)

puts birke.between?(bonsai, mammutbaum) #=> true