迭代一个范围

Jag*_*L K 1 ruby iterator loops

我需要从1最多迭代到给定数字A.我使用以下代码实现了这一点:

(1..A).step(1) do |n| puts n end
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的方法?

我的默认步骤为1.

Ale*_*kin 6

在这种情况下,更多惯用的[可论证]方式是使用Integer#upto:

1.upto(A) { |n| puts n }
Run Code Online (Sandbox Code Playgroud)

此外,step(1)是默认值,您可以简单地迭代范围本身:

(1..A).each { |n| puts n }
Run Code Online (Sandbox Code Playgroud)

或者,甚至使用Integer#times:

A.times { |n| puts n + 1 }
Run Code Online (Sandbox Code Playgroud)

请注意,这Integer#times开始计数,0因此+ 1是必需的.

NB也请注意由下@Stefan了非常宝贵的意见.

  • 值得注意的是 - 尽管它们产生相同的输出 - 每个解决方案都有不同的返回值:分别为"1","1..A"和"A".(因为他们都返回接收器) (4认同)