Rubyでこのタイプのforループを実行するにはどうすればよいですか?
for(int i=0; i<array.length; i++) {
}
array.each do |element|
element.do_stuff
end
または
for element in array do
element.do_stuff
end
インデックスが必要な場合は、これを使用できます。
array.each_with_index do |element,index|
element.do_stuff(index)
end
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
それを行う別の方法は次のとおりです
3.times do |n|
puts n;
end
thatsは0、1、2を出力するため、配列反復子のように使用することもできます
そのバリアントは著者のニーズによりよく適合すると考える
私はグーグル「Ruby for loop」のトップリンクとしてこれをヒットし続けているので、ステップが単に「1」ではないループの解決策を追加したかったのです。これらの場合、数値および日付オブジェクトに存在する「ステップ」メソッドを使用できます。これは「for」ループの近似値だと思います。
start = Date.new(2013,06,30)
stop = Date.new(2011,06,30)
# step back in time over two years, one week at a time
start.step(stop, -7).each do |d|
puts d
end
等価性は
for i in (0...array.size)
end
または
(0...array.size).each do |i|
end
または
i = 0
while i < array.size do
array[i]
i = i + 1 # where you may freely set i to any value
end
array.each_index do |i|
...
end
Rubyほどではありませんが、Rubyの質問からforループを実行する最良の方法です
ループを固定回数繰り返すには、次を試してください:
n.times do
#Something to be done n times
end
何? 2010年以降、誰も言及していなかったRubyにはfor/inループの罰金があります(誰も使用していません):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
配列にアクセスする必要がない場合、(単なるforループ) pto またはeachを使用できます:
最大:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
各:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
Rubyの列挙ループの構文は異なります。
collection.each do |item|
...
end
これは、「引数として 'blockargument'でブロックを取得する配列オブジェクトインスタンス 'collection'の 'each'メソッドの呼び出し」と読みます。 Rubyのブロック構文は、単一行ステートメントの場合、「do ... end」または「{...}」です。
ブロック引数 '| item |'オプションですが、指定されている場合、最初の引数はループされた列挙アイテムを自動的に表します。