ACTUALIZACIÓN 2: Para la posteridad, así es como me he decidido por hacerlo (gracias a la entrada de Jorg):Declarar un rango de números enteros con el paso = 1 en Ruby
100.step(2, -2) do |x|
# my code
end
(Es obvio que hay un montón de maneras de hacer esto, pero parece que esta es la manera más "Ruby" para hacerlo, y eso es exactamente lo que buscaba)
ACTUALIZACIÓN:. OK, así que lo que estaba buscando para era step
:
(2..100).step(2) do |x|
# my code
end
Pero resulta que no fui 100% cercano en mi pregunta original. De hecho, quiero iterar sobre este rango hacia atrás. Para mi sorpresa, un paso negativo no es legal.
(100..2).step(-2) do |x|
# ArgumentError: step can't be negative
end
Así: ¿cómo hago esto al revés?
Hey chicos, estoy completamente nuevo a Ruby, así que se gentil.
Digamos que quiero iterar sobre el rango de números pares de 2 a 100; ¿Como podría hacerlo?
Obviamente podría hacer:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
Pero, obviamente, (de nuevo), eso sería muy estúpido.
Sé que podría hacer algo como: (?)
i = 2
while i <= 100
# my code
i += 2
end
Creo que también podría escribir mi propia clase personalizada que proporciona su propio each
método. Estoy casi seguro de que sería excesivo, sin embargo.
Estoy interesado en dos cosas:
- ¿Es posible hacer esto con una cierta variación de la sintaxis gama estándar (es decir,
(x..y).each
)? - De cualquier manera, ¿cuál sería la "forma Ruby" más idiomática de lograr esto (usando un Rango o de otro modo)? Como dije, soy nuevo en el lenguaje; así que cualquier orientación que pueda ofrecer sobre cómo hacer las cosas en un estilo Ruby más típico sería muy apreciada.
Agradable. Exactamente lo que necesitaba, y gracias también por aclarar mi terminología. Despejado mucho! –
@ Jörg ¿Alguna idea de cómo terminaste con la última declaración? Los documentos para el paso solo mencionan un argumento, así que me preguntaba cómo trabajaste para llegar a esa forma concisa de resolver este problema. –
@n_x_l: no estoy seguro de qué documentos está viendo, el parámetro 'step' está [claramente documentado] (http://Ruby-Doc.Org/core-2.1.1/Numeric.html#method-i -paso). Los documentos más antiguos que pude encontrar fueron los de Ruby 1.8.6 y [ya estaba allí] (http://Ruby-Doc.Org/core-1.8.6/Numeric.html#method-i-step) en aquel entonces en 2007. –