Что делает обратный метод 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}