web-dev-qa-db-ja.com

1からループを開始します

私は最近、Integer.count Ruby start from 0n-1 Facebookエンジニアリングのパズルゲームで遊んでいます。最初にブロック変数に1を追加して、代わりに1から開始するという汚い修正を行いました。

もっときれいな方法はありますか?

例:

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

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
89
the Tin Man

範囲 を使用できます。

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

範囲により、開始インデックスと終了インデックスを完全に制御できます(低い値から高い値に変更する場合)。

25
mu is too short

試して

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

代わりに。 iの値が重要な場合も読みやすくなります。

8
Kathy Van Stone

もちろんwhile- loopがあります:

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

古いですが、これは誰かが探しているものかもしれません。

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