Как установить начальное смещение для each цикла в рубине? Я хочу, чтобы цикл начинался с a[3] вместо a[0]. Как это установить?
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
Ответ 1
Другая, возможно более прямая и читаемая возможность заключается в использовании Array#drop:
a.drop(3).each do |i|
# do something with item i
end
Теперь это действительно сияет, если оно сочетается с другими методами, унаследованными от Enumerable, поэтому есть вероятность, что вам будет лучше альтернатива вашему императиву each цикла. Предположим, вы хотите отфильтровать извлеченный фрагмент и затем преобразовать его:
a = [0,1,2,3,4,5,6,7]
a.drop(3).select(&:even?).map { |x| x * 2 }
# => [8, 12]
Или скажите, что вы хотите распечатать список всех значений:
a = ["1", "2", "3", "4", "5"]
puts a.drop(3).join("\n")
Вывод:
4
5
Эти функции, унаследованные от функционального программирования, делают Ruby настолько сильным :)
Ответ 2
Используйте each из подчасти массива. В примере ниже, начиная с четвертого элемента и заканчивая:
a[3..-1].each do |i|
#some stuff
end
Ответ 3
Это поможет вам
a[3..-1].each do |i|
#your logic
end
Ответ 4
Большинство рубистов забывают о добром старце для цикла: