saya sedang mencari pengindeksan khusus untuk pengindeksan dalam satu lingkaran, tidak satu pun dari solusi ini membuatnya segera jelas bagaimana melakukannya. op mengkhianati niatnya dengan array.length dalam kode ...
jheriko
6
Baca jawaban saya dengan cermat. Ada solusi perulangan dengan pengindeksan disertakan.
Eimantas
8
Sering kali, eachitu bagus. Tapi terkadang saya hanya ingin pengulangan tradisional terkutuk. Terkadang "cara Ruby" bisa sangat mengganggu.
Ruben Martinez Jr.
1
bagaimana cara mengatur indeks secara manual dalam ruby sehingga saya dapat menulis semacam itu sendiri
Muhammad Umer
6
bagaimana jika saya ingin melewatkan dua iterasi berikutnya
Muhammad Umer
77
limit = array.length;
for counter in0..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
Satu keuntungan dari .each ... do adalah bahwa blok sementara berada di luar ruang lingkup pada akhir perulangan, sedangkan untuk ... di meninggalkan lingkup sementara.
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.
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
sumber
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
sumber
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
sumber
Persamaannya akan
for i in (0...array.size) end
atau
(0...array.size).each do |i| end
atau
i = 0 while i < array.size do array[i] i = i + 1 # where you may freely set i to any value end
sumber
array.each_index do |i| ... end
Ini tidak terlalu Ruby, tapi itu cara terbaik untuk melakukan loop dari pertanyaan di Ruby
sumber
each
melainkaneach_index
. +1Untuk mengulangi perulangan beberapa kali, coba:
n.times do #Something to be done n times end
sumber
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
sumber
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
sumber
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
sumber
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.
sumber