识别升序或降序或范围

时间:2019-05-07 06:45:09

标签: ruby-on-rails ruby

我想知道如何识别降序Range

我有一个测试用例,其中在(1..-1)中给出了范围,而to_a方法给出了一个空数组。

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

帮我写一个条件,可以确认给出了降序Range

4 个答案:

答案 0 :(得分:4)

范围具有Range#firstRange#last方法。

r = (5..1)
r.first > r.last # => true

答案 1 :(得分:4)

使用Range#size

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

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

答案 2 :(得分:0)

如果您只想检查反向范围:

(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]

答案 3 :(得分:0)

(1..5).to_a.present? ? "Ascending" : "Descending"

如果数组中存在值,则表示它升序降序,原因是如果您给出(5..1)范围,则会创建空白数组。