Operatorul Spaceship <=> și Modulul Comparable în Ruby în Ruby

Ghid complet pentru operatorul de comparare navă spațială <=> și modulul Comparable: implementarea ordonării personalizate a obiectelor, <, <=, ==, >=, > și sortarea colecțiilor.

Sintaxă
def <=>(altul); include Comparable

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
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Operatorul Spaceship <=> și Modulul Comparable în Ruby

Ai o nelămurire despre utilizarea comenzii Operatorul Spaceship <=> și Modulul Comparable în Ruby sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.