Operatorul <=> (poreclit spaceship operator) este piatra de temelie a comparațiilor în Ruby. Prin implementarea acestei singure metode și includerea modulului Comparable, o clasă obține automat toți operatorii relaționali: <, <=, ==, >=, > și metoda between?.
Implementarea ordonării unei clase de produse cu Comparable
class Produs
include Comparable
attr_reader :nume, :pret
def initialize(nume, pret)
@nume = nume
@pret = pret
end
# Returnează:
# -1 dacă self < altul
# 0 dacă self == altul
# 1 dacă self > altul
def <=>(altul)
return nil unless altul.is_a?(Produs)
@pret <=> altul.pret
end
def to_s
"#{@nume} (#{@pret} RON)"
end
end
p1 = Produs.new("Tastatură Mecanică", 350)
p2 = Produs.new("Mouse Gaming", 220)
p3 = Produs.new("Monitor 4K", 1800)
# Datorită Comparable, putem compara direct obiectele:
puts "p1 este mai scump decât p2? #{p1 > p2}" # true
puts "p2 este între 200 și 300 RON? #{p2.between?(Produs.new('Min', 200), Produs.new('Max', 300))}" # true
# Sortarea automată a unei liste de produse:
lista = [p1, p2, p3]
produse_ordonate = lista.sort
puts "Produse sortate crescător după preț:"
puts produse_ordonate
Întrebări & Exemple de Cod:
Operatorul Spaceship <=> și Modulul Comparable în RubyAi o nelămurire despre utilizarea comenzii
Operatorul Spaceship <=> și Modulul Comparable în Rubysau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.