Bagaimana cara melakukan loop for jenis ini di Ruby?
for(int i=0; i<array.length; i++) {
}
Bagaimana cara melakukan loop for jenis ini di Ruby?
for(int i=0; i<array.length; i++) {
}
Jawaban:
array.each do |element|
element.do_stuff
end
atau
for element in array do
element.do_stuff
end
Jika Anda membutuhkan indeks, Anda dapat menggunakan ini:
array.each_with_index do |element,index|
element.do_stuff(index)
end
each
itu bagus. Tapi terkadang saya hanya ingin pengulangan tradisional terkutuk. Terkadang "cara Ruby" bisa sangat mengganggu.
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
cara lain untuk melakukannya adalah sebagai berikut
3.times do |n|
puts n;
end
thats akan mencetak 0, 1, 2, jadi bisa digunakan seperti iterator array juga
Pikirkan varian itu lebih sesuai dengan kebutuhan penulis
Saya terus menekan ini sebagai tautan teratas untuk google "ruby for loop", jadi saya ingin menambahkan solusi untuk loop di mana langkahnya tidak hanya '1'. Untuk kasus ini, Anda dapat menggunakan metode 'langkah' yang ada pada objek Numerik dan Tanggal. Saya pikir ini adalah pendekatan yang dekat untuk loop 'untuk'.
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
Ini tidak terlalu Ruby, tapi itu cara terbaik untuk melakukan loop dari pertanyaan di Ruby
each
melainkan each_index
. +1
Jika Anda tidak perlu mengakses array Anda , (hanya loop for yang sederhana) Anda dapat menggunakan upto atau each:
Hingga:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
Setiap:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
Apa? Dari tahun 2010 dan tidak ada yang menyebutkan Ruby memiliki loop for / in yang bagus (hanya tidak ada yang menggunakannya):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Sintaks putaran enumerasi Ruby berbeda:
collection.each do |item|
...
end
Ini dibaca sebagai "panggilan ke metode 'setiap' dari instance objek array 'collection' yang mengambil blok dengan 'blockargument' sebagai argumen". Sintaks blok di Ruby adalah 'do ... end' atau '{...}' untuk pernyataan baris tunggal.
Argumen blok '| item |' bersifat opsional tetapi jika disediakan, argumen pertama secara otomatis mewakili item enumerasi yang diulang.