Понимание и использование оператора <=> в Ruby on Rails для сравнения значений

Оператор «<=>» в Ruby on Rails называется «оператором космического корабля» и используется для сравнения двух значений и определения их относительного порядка. Он возвращает 0, если значения равны, 1, если левое значение больше, и -1, если правое значение больше. Оператор космического корабля обычно используется в алгоритмах сортировки и пользовательских методах сортировки.

Вот несколько примеров использования оператора космического корабля в Rails:

  1. Сортировка массива чисел:

    numbers = [5, 2, 10, 1, 8]
    sorted_numbers = numbers.sort { |a, b| a <=> b }
    puts sorted_numbers
    # Output: [1, 2, 5, 8, 10]
  2. Сортировка массива строк:

    words = ["cat", "apple", "zebra", "banana"]
    sorted_words = words.sort { |a, b| a <=> b }
    puts sorted_words
    # Output: ["apple", "banana", "cat", "zebra"]
  3. Сортировка массива пользовательских объектов:

    class Person
    attr_accessor :name, :age
    
    def initialize(name, age)
    @name = name
    @age = age
    end
    end
    people = [
    Person.new("John", 25),
    Person.new("Alice", 30),
    Person.new("Bob", 20)
    ]
    sorted_people = people.sort { |a, b| a.age <=> b.age }
    puts sorted_people.map(&:name)
    # Output: ["Bob", "John", "Alice"]