MISE À JOUR 2: Pour la postérité, voilà comment je suis installé à le faire (grâce à l'entrée de Jorg):Déclarant une gamme entière à l'étape = 1 dans Ruby
100.step(2, -2) do |x|
# my code
end
(Évidemment, il y a beaucoup de façons de le faire, mais il semble que c'est le plus « Ruby » façon de le faire, et c'est exactement ce que je cherchais)
MISE à JOUR. OK, donc ce que je recherchais pour était step
:
(2..100).step(2) do |x|
# my code
end
Mais il s'est avéré que je n'étais pas 100% disponible dans ma question initiale. Je veux réellement parcourir cette gamme à l'envers. À ma grande surprise, une étape négative n'est pas légale.
(100..2).step(-2) do |x|
# ArgumentError: step can't be negative
end
Alors: Comment faire cela en arrière?
Hé les gars, je suis complètement nouveau à Ruby, alors soyez gentil. Dites que je veux parcourir la gamme des nombres pairs de 2 à 100; comment ferais-je cela?
Il est évident que je pourrait faire:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
Mais, de toute évidence (encore une fois), ce serait assez stupide.
Je sais que je pouvais faire quelque chose comme: (?)
i = 2
while i <= 100
# my code
i += 2
end
Je crois que je pourrais aussi écrire ma propre classe personnalisée qui fournit sa propre méthode each
. Je suis presque sûr que ce serait exagéré, cependant.
Je suis intéressé par deux choses:
- Est-il possible faire cela avec une certaine variation de la syntaxe standard de la gamme (à savoir
(x..y).each
)? - Quoi qu'il en soit, quelle serait la "méthode Ruby" la plus idiomatique de l'accomplir (en utilisant une gamme ou autre)? Comme je l'ai dit, je suis nouveau à la langue; Donc tout conseil que vous pouvez offrir sur la façon de faire les choses dans un style Ruby plus typique serait très apprécié.
Nice. Exactement ce dont j'avais besoin - et merci aussi de clarifier ma terminologie. Éclairci beaucoup! –
@ Jörg aucune idée comment vous avez fini avec la dernière déclaration? Les documents pour l'étape ne mentionnent qu'un seul argument, alors je me demandais comment vous aviez trouvé votre façon de résoudre ce problème de façon succincte. –
@n_x_l: Je ne suis pas sûr de ce que vous regardez, le paramètre 'step' est [clairement documenté] (http://Ruby-Doc.Org/core-2.1.1/Numeric.html#method-i -étape). Les documents les plus anciens que j'ai pu trouver étaient ceux de Ruby 1.8.6 et il [était déjà là] (http://Ruby-Doc.Org/core-1.8.6/Numeric.html#method-i-step) à l'époque en 2007. –