Wie mache ich diese Art von for-Schleife in Ruby?
for(int i=0; i<array.length; i++) {
}
Wie mache ich diese Art von for-Schleife in Ruby?
for(int i=0; i<array.length; i++) {
}
Antworten:
array.each do |element|
element.do_stuff
end
oder
for element in array do
element.do_stuff
end
Wenn Sie einen Index benötigen, können Sie diesen verwenden:
array.each_with_index do |element,index|
element.do_stuff(index)
end
each
ist das toll. Aber manchmal möchte ich nur eine gottverdammte traditionelle Schleife. Manchmal kann der "Ruby Way" einfach nur nervig sein.
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
Der andere Weg, dies zu tun, ist der folgende
3.times do |n|
puts n;
end
das wird 0, 1, 2 drucken, könnte also auch wie ein Array-Iterator verwendet werden
Denken Sie, dass diese Variante besser zu den Bedürfnissen des Autors passt
Ich treffe dies immer wieder als Top-Link für Google "Ruby for Loop", daher wollte ich eine Lösung für Loops hinzufügen, bei denen der Schritt nicht einfach "1" war. In diesen Fällen können Sie die Schrittmethode verwenden, die für Numerik- und Datumsobjekte vorhanden ist. Ich denke, dies ist eine enge Annäherung für eine 'for'-Schleife.
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
array.each_index do |i|
...
end
Es ist nicht sehr Rubyish, aber es ist der beste Weg, um die for-Schleife aus der Frage in Ruby zu machen
each
sondern ist each_index
. +1
Wenn Sie nicht auf Ihr Array zugreifen müssen (nur eine einfache for-Schleife), können Sie bis zu oder jedes verwenden:
Bis zu:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
Jeder:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
Was? Ab 2010 hat niemand erwähnt, dass Ruby eine Geldstrafe für / in-Schleife hat (es wird nur von niemandem verwendet):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Rubys Aufzählungsschleifensyntax ist anders:
collection.each do |item|
...
end
Dies lautet "Aufruf der Methode 'each' der Array-Objektinstanz 'collection', die einen Block mit dem Argument 'blockargument' verwendet". Die Blocksyntax in Ruby lautet 'do ... end' oder '{...}' für einzeilige Anweisungen.
Das Blockargument '| item |' ist optional, aber falls angegeben, repräsentiert das erste Argument automatisch das in einer Schleife aufgezählte Element.