Определение восходящего и нисходящего порядка или диапазона - PullRequest
0 голосов
/ 07 мая 2019

Я хочу знать, как мы можем определить, что задан нисходящий порядок Range.

У меня есть тестовый случай, в котором диапазон указан в (1..-1), а метод to_a дает пустой массив для того же.

(1..5).to_a
=> [1, 2, 3, 4, 5]
(5..1).to_a
=> []

Помогите мне написать условие, которое может подтвердить убывание порядка Range.

Ответы [ 4 ]

4 голосов
/ 07 мая 2019

Использование Range#size:

(5..1).size.zero?
#⇒ true

(1..5).size.zero?
#⇒ false
4 голосов
/ 07 мая 2019

Диапазон имеет Диапазон # первый и Диапазон # последний методы.

r = (5..1)
r.first > r.last # => true
0 голосов
/ 08 мая 2019
(1..5).to_a.present? ? "Ascending" : "Descending"

Если значение в массиве означает, что оно По возрастанию или По убыванию Причина, если вы задаете диапазон (5..1) , создает пустой массив.

0 голосов
/ 07 мая 2019

Если вы хотите просто проверить обратный диапазон:

(5..1).to_a.empty? #=> true
(1..5).to_a.empty? #=> false


Если вы хотите иметь массив в качестве вывода, вы можете сделать
r.to_a.then { |ary| ary.empty? ? (r.end..r.begin).to_a.reverse : ary }

Выводдля двух случаев:

r = (5..1) #=> [5, 4, 3, 2, 1]
r = (1..5) #=> [1, 2, 3, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...