¿Cómo puedo iterar hasta cuatro objetos de una matriz y no todos? En el siguiente código, itera sobre todos los objetos. Necesito solo los primeros cuatro objetos.Iterar los primeros n elementos de una matriz
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
¿Se puede hacer como objects=objects.slice(4)
, o es la única manera de iteración?
Editar:
También necesito para imprimir el número de veces que ocurre la iteración, pero mi solución objects[0..3]
(gracias a respuestas aquí) de largo.
i=0;
arr=Array.new
objects[0..3].each do |obj|
arr << obj
p i;
i++;
end
simplemente estás tratando de agarrar los primeros cuatro objetos, o estás tratando de iterar sobre los primeros cuatro objetos ? Puede usar el método 'tomar' para tomar los primeros n objetos si solo quiere iterar sobre ellos:' objects.take (4) .each do ... ' –
¿Por qué no' arr = Products.limit (4). to_a' (¿pero probablemente ni siquiera necesites 'to_a')? Cada vez que te encuentres diciendo 'Modelo.todos 'debes pensar de nuevo (y luego por tercera vez). –
@Yosef desea [each_with_index] (http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index) ... también, '++' no es un ruby operator – Kyle