【发布时间】:2011-03-03 01:38:31
【问题描述】:
更新 2:对于后代,这就是我决定这样做的方式(感谢 Jorg 的意见):
100.step(2, -2) do |x|
# my code
end
(显然有很多方法可以做到这一点;但听起来这是最“Ruby”的方法;这正是我所追求的。)
更新:好的,所以我要找的是step:
(2..100).step(2) do |x|
# my code
end
但事实证明,我并没有 100% 回答我最初的问题。我实际上想向后迭代这个范围。令我惊讶的是,负步骤是不合法的。
(100..2).step(-2) do |x|
# ArgumentError: step can't be negative
end
那么:我该如何倒退?
我对 Ruby完全陌生,所以要温柔。
假设我想遍历从 2 到 100 的偶数范围;我该怎么做?
显然我可以这样做:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
但是,显然(再次),那太愚蠢了。
我知道我可以这样做:
i = 2
while i <= 100
# my code
i += 2
end
我相信我也可以编写自己的自定义类来提供自己的each 方法(?)。不过,我几乎可以肯定这太过分了。
我对两件事感兴趣:
- 是否可能使用标准 Range 语法的一些变体(即
(x..y).each)来做到这一点? - 无论哪种方式,完成此任务的最惯用的“Ruby 方式”是什么(使用 Range 或其他方式)?就像我说的,我是这门语言的新手;因此,您可以就如何以更典型的 Ruby 风格做事提供任何指导,我们将不胜感激。
【问题讨论】: