ОБНОВЛЕНИЕ 2: для потомков именно так я решил это сделать (благодаря вводу Jorg):
100.step(2, -2) do |x|
# my code
end
(Очевидно, что есть много способов сделать это, но похоже, что это самый "рубиновый" способ сделать это, и это именно то, что я был после.)
UPDATE: ОК, поэтому я искал step
:
(2..100).step(2) do |x|
# my code
end
Но, оказывается, я не был на 100% в своем первоначальном вопросе. Я на самом деле хочу перебрать этот диапазон назад. К моему удивлению, негативный шаг не является законным.
(100..2).step(-2) do |x|
# ArgumentError: step can't be negative
end
Итак: как это сделать назад?
Эй, ребята, я совершенно новый для Ruby, поэтому будьте осторожны.
Скажем, я хочу перебирать диапазон четных чисел от 2 до 100; как бы я это сделал?
Очевидно, я мог бы сделать:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
Но, очевидно (опять же), это было бы довольно глупо.
Я знаю, что могу сделать что-то вроде:
i = 2
while i <= 100
# my code
i += 2
end
Я считаю, что могу написать собственный собственный класс, который предоставляет свой собственный метод each
(?). Я почти уверен, что это было бы излишним.
Меня интересуют две вещи:
- Возможно ли это с некоторым изменением стандартного синтаксиса Range (т.е.
(x..y).each
)? - В любом случае, какой был бы самый идиоматический "способ Ruby" для достижения этого (используя Range или иначе)? Как я уже сказал, я новичок в языке; так что любое руководство, которое вы можете предложить о том, как делать вещи в более типичном стиле Ruby, будет высоко оценено.