首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我们不能在ruby中迭代“反转范围”?

为什么我们不能在ruby中迭代“反转范围”?
EN

Stack Overflow用户
提问于 2010-01-15 17:36:34
回答 10查看 42.8K关注 0票数 114

我尝试使用范围和each向后迭代

代码语言:javascript
复制
(4..0).each do |i|
  puts i
end
==> 4..0

通过0..4迭代写入数字。在另一个范围内,r = 4..0似乎是好的,r.first == 4r.last == 0

上面的构造没有产生预期的结果,这对我来说似乎很奇怪。这么做的原因是什么?在什么情况下,这种行为是合理的?

EN

回答 10

Stack Overflow用户

发布于 2014-01-14 04:17:04

向后迭代范围的(0..1).reverse_each怎么样?

票数 98
EN

Stack Overflow用户

发布于 2010-01-15 17:49:09

使用each遍历Ruby语言中的范围时,会对范围中的第一个对象调用succ方法。

代码语言:javascript
复制
$ 4.succ
=> 5

5在范围之外。

你可以用这个技巧来模拟反向迭代:

代码语言:javascript
复制
(-4..0).each { |n| puts n.abs }

John指出,如果跨度为0,这将不起作用。这将:

代码语言:javascript
复制
>> (-2..2).each { |n| puts -n }
2
1
0
-1
-2
=> -2..2

我不能说我真的喜欢他们中的任何一个,因为他们有点模糊了意图。

票数 19
EN

Stack Overflow用户

发布于 2014-06-09 18:26:06

另一种方式是(1..10).to_a.reverse

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2070574

复制
相关文章

相似问题

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