首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标识升序和降序或范围

标识升序和降序或范围
EN

Stack Overflow用户
提问于 2019-05-07 14:45:09
回答 4查看 152关注 0票数 0

我想知道我们如何识别Range的降序。

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

代码语言:javascript
复制
(1..5).to_a
=> [1, 2, 3, 4, 5]
(5..1).to_a
=> []

帮我写一个条件,可以确定降序Range是给定的。

EN

回答 4

Stack Overflow用户

发布于 2019-05-07 14:52:12

Range有Range#firstRange#last方法。

代码语言:javascript
复制
r = (5..1)
r.first > r.last # => true
票数 4
EN

Stack Overflow用户

发布于 2019-05-07 15:48:55

使用Range#size

代码语言:javascript
复制
(5..1).size.zero?
#⇒ true

(1..5).size.zero?
#⇒ false
票数 4
EN

Stack Overflow用户

发布于 2019-05-07 17:01:14

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

代码语言:javascript
复制
(5..1).to_a.empty? #=> true
(1..5).to_a.empty? #=> false

如果想要有一个数组作为输出,可以这样做

代码语言:javascript
复制
r.to_a.then { |ary| ary.empty? ? (r.end..r.begin).to_a.reverse : ary }

这两种情况的输出是:

代码语言:javascript
复制
r = (5..1) #=> [5, 4, 3, 2, 1]
r = (1..5) #=> [1, 2, 3, 4, 5]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56016940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档