从1开始循环

Cas*_*how 43 ruby loops

最近,我突然产生了可怕的想法Integer.count在Ruby中,从循环开始0,去n-1,同时与Facebook的工程困惑的播放.我做了一个肮脏的修复,在开头添加一个块变量,以便它从一个开始.

有更漂亮的方式吗?

例:

10.times do |n|
    n += 1
    puts n
end #=> 012345789
Run Code Online (Sandbox Code Playgroud)

the*_*Man 92

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
Run Code Online (Sandbox Code Playgroud)

还有一个允许你以步长值递增的step代替upto:

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


mu *_*ort 25

你可以使用一个范围:

(1..10).each { |i| puts i }
Run Code Online (Sandbox Code Playgroud)

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


Kat*_*one 9

尝试

(1..10).each do |i|
 #  ... i goes from 1 to 10
end
Run Code Online (Sandbox Code Playgroud)

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