Jak mogę iterować maksymalnie cztery obiekty tablicy, a nie wszystkie? W poniższym kodzie iteruje on nad wszystkimi obiektami. Potrzebuję tylko pierwszych czterech obiektów.Powtórz pierwsze n elementów tablicy
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
Czy można to zrobić tak jak objects=objects.slice(4)
, czy jest to jedyna metoda?
Edit:
ja też trzeba wydrukować ile razy iteracja się dzieje, ale moje rozwiązanie objects[0..3]
(dzięki odpowiedziami tutaj) długości.
i=0;
arr=Array.new
objects[0..3].each do |obj|
arr << obj
p i;
i++;
end
Są po prostu próbuje złapać pierwsze cztery przedmioty, albo próbujesz iteracyjne ciągu pierwszych czterech obiektów ? Możesz użyć metody 'take', aby pobrać pierwsze n obiektów, jeśli chcesz po prostu iterować:' objects.take (4) .each do ... ' –
Dlaczego nie' arr = Products.limit (4). to_a' (ale prawdopodobnie nie potrzebujesz nawet 'to_a')? Za każdym razem, gdy mówisz "Model.all", powinieneś pomyśleć raz jeszcze (a potem po raz trzeci). –
@ Youosef chcesz [each_with_index] (http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index) ... także, '++' nie jest operator ruby – Kyle