77


21

rubyのforループの構文

Rubyでこのタイプのforループを実行するにはどうすればよいですか?

for(int i=0; i

10 Answer


109


array.each do |element|
  element.do_stuff
end

or

for element in array do
  element.do_stuff
end

インデックスが必要な場合、これを使用できます。

array.each_with_index do |element,index|
  element.do_stuff(index)
end


69


limit = array.length;
for counter in 0..limit
 --- make some actions ---
end

'' '' '

それを行う別の方法は次のとおりです

3.times do |n|
  puts n;
end

thatsは0、1、2を出力するため、配列反復子のように使用することもできます

そのバリアントは著者のニーズによりよく適合すると考える


27


私はこれをグーグルの「ルビー・フォー・ループ」のトップリンクとしてヒットし続けているので、ステップが単に「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


15


array.each_index do |i|
  ...
end

Rubyほどではありませんが、Rubyの質問からforループを実行する最良の方法です


15


等価性は

for i in (0...array.size)
end

or

(0...array.size).each do |i|
end

or

i = 0
while i < array.size do
   array[i]
   i = i + 1 # where you may freely set i to any value
end


12


ループを固定回数繰り返すには、次を試してください:

n.times do
  #Something to be done n times
end


8


何? 2010年以降、Rubyにfor / inループが含まれているという言及はありませんでした(誰も使用していません)。

ar = [1,2,3,4,5,6]
for item in ar
  puts item
end


8


*配列にアクセスする必要がない*場合(単純なforループ)、http://www.ruby-doc.org/core-2.0/Integer.html#method-i-upto [upto ]またはそれぞれ:

最大:

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


4


['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}


0


Rubyの列挙ループの構文は異なります。

collection.each do |item|
...
end

これは、「引数として 'blockargument’でブロックを取得する配列オブジェクトインスタンス 'collection’の 'each’メソッドの呼び出し」と読みます。 Rubyのブロック構文は 'do …​ end 'または' \ {…​ } '単一行ステートメント。

ブロック引数 '| item |'オプションですが、指定されている場合、最初の引数はループされた列挙アイテムを自動的に表します。