Ответ 1
Я предполагаю, что путь rubyst будет идти
arr=Array.new
objects[0..3].each do |obj|
arr << obj
end
p arr;
так что с помощью [0..3]
вы создадите подмассив, содержащий только первые 4 элемента из объектов.
Как я могу перебирать до четырех объектов массива, а не всех? В следующем коде он выполняет итерацию по всем объектам. Мне нужны только первые четыре объекта.
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
Можно ли это сделать как objects=objects.slice(4)
, или это итерация единственный способ?
Edit:
Мне также нужно печатать, сколько раз происходит итерация, но мое решение objects[0..3]
(спасибо ответам здесь) длинное.
i=0;
arr=Array.new
objects[0..3].each do |obj|
arr << obj
p i;
i++;
end
Я предполагаю, что путь rubyst будет идти
arr=Array.new
objects[0..3].each do |obj|
arr << obj
end
p arr;
так что с помощью [0..3]
вы создадите подмассив, содержащий только первые 4 элемента из объектов.
Вы можете получить первые n элементов, используя
arr = objects.first(n)
Enumerable#take
возвращает первые n
элементы из Enumerable.
arr = objects[0..3]
Вот и все. Вам не нужны остальные
Вы можете сплайсировать массив следующим образом: objects[0,4]
objects[0,4]
говорит: начинайте с индекса 0 и дайте мне 4 элемента массива.
arr = objects[0,4].inject([]) do |array, obj|
array << obj
end
p arr