Что делает обратный метод Array# в Ruby?

В руби, когда звоню reverse метод в массиве, он не выполняет обратную сортировку массива полностью.

array = [5, 4, 9, 8, 7, 1, 2]

array.reverse # => [2, 1, 7, 8, 9, 4, 5]

Я не могу понять, какую операцию он выполняет над массивом.

2 ответа

Решение
> array
 => [5, 4, 9, 8, 7, 1, 2] 
> array.sort.reverse  # it will sort the array by value in descending order
 => [9, 8, 7, 5, 4, 2, 1] 

Замечания:

  • sort: возвращает новый массив, созданный сортировкой self.
  • reverse: Возвращает новый массив, содержащий элементы self в обратном порядке.

Посмотри, как это работает:

> array.reverse   # it will reverse the array by indexing
 => [2, 1, 7, 8, 9, 4, 5] 
> array.sort  # it will sort the array by value in ascending order
 => [1, 2, 4, 5, 7, 8, 9]

Массив #reverse изменяет порядок массива, но не сортирует массив в обратном порядке.

array = [1,5,7,3]
array.reverse
=> [3,7,5,1]

Если вы хотите отсортировать массив в обратном порядке, вы можете попробовать это

array.sort_by{|a|array.max - a}
Другие вопросы по тегам