Bereiche mit zwei Punkten beinhalten ihre beiden Grenzen, bei drei Punkten fällt die obere Grenze weg.
(1..3).to_a #-> [1, 2, 3] (1...3).to_a #-> [1, 2]
Wie immer erlaubt Ruby auch die Konstruktion von Bereichen mit eigenen
Objekten, Voraussetzung ist hier, dass die Methoden <=> und
succ (Nachfolger) definiert sind.
In logischen Ausdrücken verhalten sich Bereiche wie Ein-/Aus-Schalter:
for a in 1..10 print ((a==3)..(a==6) ? a : "") end #-> 3456
Hier ist der Unterschied zwischen .. und ..., dass
die erste Form bei Eintreten der ersten Bedingung auch noch die
zweite Bedingung überprüft,
so dass ein Ein- und Ausschalten auf einem einzelnen Element möglich ist.
Im folgenden Beispiel schalten wir bei Vielfachen von 4 die Pluszeichen ein, beim
nächsten Vielfachen von 3 schalten wir sie wieder ab. Der Unterschied
wird beim zwölften Zeichen deutlich: In der oberen Version wird für a=12
eingeschaltet, ein + geschrieben und wieder ausgeschaltet, während
unten bis a=15 eingeschaltet bleibt.
for a in 1..30 print ((a%4==0)..(a%3==0) ? "+" : "-") end #-> ---+++-++--+---+++-++--+---+++ for a in 1..30 print ((a%4==0)...(a%3==0) ? "+" : "-") end #-> ---+++-++--+++++++-++--+++++++