Что такое метод сортировки (sort) в Ruby?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
sort в Ruby - это метод, используемый для упорядочивания элементов в коллекции (например, массива или диапазона). Он возвращает новый объект, содержащий те же элементы, но в отсортированном порядке, оставляя исходную коллекцию без изменений.
Сортировка по умолчанию выполняется в возрастающем порядке, используя оператор сравнения <=>.
Можно предоставить блок кода для определения пользовательской логики сортировки. Блок принимает два элемента из коллекции и должен возвращать:
- -1 или отрицательное число, если первый элемент должен быть раньше второго.
- 0, если элементы считаются равными.
- 1 или положительное число, если первый элемент должен быть позже второго.
Примеры использования:
# Сортировка массива чисел по умолчанию (возрастающий порядок)
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = numbers.sort # => [1, 1, 2, 3, 4, 5, 6, 9]
# Сортировка массива строк по умолчанию (алфавитный порядок)
fruits = ["banana", "apple", "cherry"]
sorted_fruits = fruits.sort # => ["apple", "banana", "cherry"]
# Сортировка в убывающем порядке (с использованием блока)
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_desc = numbers.sort { |a, b| b <=> a } # => [9, 6, 5, 4, 3, 2, 1, 1]
# Сортировка массива хешей по значению ключа (с использованием блока)
people = [{name: "Alice", age: 30}, {name: "Bob", age: 25}, {name: "Charlie", age: 35}]
sorted_by_age = people.sort { |a, b| a[:age] <=> b[:age] }
# => [{:name=>"Bob", :age=>25}, {:name=>"Alice", :age=>30}, {:name=>"Charlie", :age=>35}]
Существует также мутирующий аналог sort! и sort_by / sort_by! для более эффективной сортировки по ключу. sort_by вычисляет ключ для каждого элемента один раз перед сортировкой.