UPDATE 2: Für die Nachwelt das ist, wie ich es zu tun (dank Jorgs Eingang) entschieden haben:Deklarieren eine ganze Zahl Bereich mit Schritt = 1 in Ruby
100.step(2, -2) do |x|
# my code
end
(Natürlich gibt es viele Möglichkeiten, dies zu tun, aber es klingt wie dies die „Ruby“ Art und Weise, es zu tun, und das ist genau das, was ich war nach)
UPDATE. OK, also was ich gesucht für war step
:
(2..100).step(2) do |x|
# my code
end
Aber es stellt sich heraus, dass ich in meiner ursprünglichen Frage nicht 100% bereit war. Ich möchte diesen Bereich tatsächlich rückwärts durchlaufen. Zu meiner Überraschung ist ein negativer Schritt nicht legal.
Also: Wie mache ich das rückwärts?
Hey Jungs, ich bin völlig neue Ruby, sein so sanft.
Angenommen, ich möchte über den Bereich der geraden Zahlen von 2 bis 100 iterieren; Wie würde ich das tun?
Offensichtlich ich könnte tun:
(2..100).each do |x|
if x % 2 == 0
# my code
end
end
Aber offensichtlich (wieder), das wäre ziemlich dumm.
Ich weiß, dass ich etwas tun könnte wie: (?)
i = 2
while i <= 100
# my code
i += 2
end
Ich glaube, ich könnte auch meine eigene benutzerdefinierte Klasse schreiben, die ihre eigene each
Methode zur Verfügung stellt. Ich bin mir fast sicher, dass das ein Overkill wäre.
ich in zwei Dingen interessiert bin:
- Ist es möglich dies der Standardbereich Syntax mit einigen Variationen zu tun (das heißt,
(x..y).each
)? - Wie auch immer, was wäre der idiomatische "Ruby Way", um dies zu erreichen (mit einem Range oder anders)? Wie ich schon sagte, ich bin neu in der Sprache. also jede Anleitung, die Sie anbieten können, wie man Dinge in einem typischeren Rubin-Stil macht, würde sehr geschätzt werden.
Schön. Genau das, was ich brauchte - und danke auch für die Klärung meiner Terminologie. Viel aufräumen! –
@ Jörg keine Ahnung wie du mit der letzten Aussage gelandet bist? Die Dokumente für Schritt erwähnen nur ein Argument, also habe ich mich gefragt, wie Sie zu dieser prägnanten Lösung dieses Problems gekommen sind. –
@n_x_l: Ich bin mir nicht sicher, welche Dokumente Sie betrachten, der 'step' Parameter ist [klar dokumentiert] (http://Ruby-Doc.Org/core-2.1.1/Numeric.html#method-i -Schritt). Die ältesten Dokumente, die ich finden konnte, waren die für Ruby 1.8.6 und es war damals schon da (http://Ruby-Doc.Org/core-1.8.6/Numeric.html#method-i-step) im Jahr 2007. –