从1开始循环

时间:2011-04-24 20:12:55

标签: ruby loops

我最近发现了一个可怕的想法:Ruby中的Integer.count循环从0开始,并在玩Facebook工程益智游戏时转到n-1。我做了一个肮脏的修复,在开头添加一个块变量,以便它从一个开始。

有更漂亮的方式吗?

示例:

10.times do |n|
    n += 1
    puts n
end #=> 012345789

5 个答案:

答案 0 :(得分:88)

Ruby支持多种计数和循环方式:

1.upto(10) do |i|
  puts i
end

>> 1.upto(10) do |i|
 >     puts i
|    end #=> 1
1
2
3
4
5
6
7
8
9
10

还有step代替upto,它允许您按步长值递增:

>> 1.step(10,2) { |i| puts i } #=> 1
1
3
5
7
9

答案 1 :(得分:23)

您可以使用range

(1..10).each { |i| puts i }

范围使您可以完全控制起始和结束索引(只要您想从较低的值转到较高的值)。

答案 2 :(得分:8)

尝试

(1..10).each do |i|
 #  ... i goes from 1 to 10
end

代替。当i的值很重要时,它也更容易阅读。

答案 3 :(得分:2)

当然有while - 循环:

i = 1
while i<=10 do
  print "#{i} "
  i += 1
end
# Outputs: 1 2 3 4 5 6 7 8 9 10

答案 4 :(得分:2)

陈旧,但这可能是有人在寻找的东西..

5.times.with_index(100){|i, idx| p i, idx};nil
#=>
    0
    100
    1
    101
    2
    102
    3
    103
    4
    104