识别上升和下降顺序或范围



我想知道我们如何确定给出降序Range

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

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

帮助我写一个可以确认降序Range的条件。

使用 Range#size

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

范围具有范围#首先和范围#最后的方法。

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

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

(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]
(1..5).to_a.present? ? "Ascending" : "Descending"

如果阵列中存在的值表示上升 discending 原因,如果您给出(5..1( range range trange in trake streate black array。

最新更新