|
|||
class Range |
|
Range
(dt. Bereich, d.Red.) repräsentiert ein Intervall---
einen Satz von Werten mit einem Beginn und einem Ende. Ein Range
wird unter Verwendung der s..
e oder s...
e
Symbole bzw. mit Range.new
konstruiert. Mit ..
konstruierte Bereiche laufen vom Beginn bis zum Ende inklusive des
Endwerts, während Bereiche, die mit ...
konstruiert wurde, den Endwert nicht enthalten.
Als Iterator gebraucht, geben Range
-Objekte jeden Wert in der Sequenz
zurück.
(-1..-5).to_a |
» | [] |
(-5..-1).to_a |
» | [-5, -4, -3, -2, -1] |
('a'..'e').to_a |
» | ["a", "b", "c", "d", "e"] |
('a'...'e').to_a |
» | ["a", "b", "c", "d"] |
Range
kann aus einem beliebigen Objekttyp erstellt werden, solange
die Objekte mit Hilfe ihres <=>
-Operators verglichen werden können und sie die
succ
-Methode definieren, die das nächste Objekt in der Sequenz liefert.
class Xs # represent a string of 'x's |
||
include Comparable |
||
attr :length |
||
def initialize(n) |
||
@length = n |
||
end |
||
def succ |
||
Xs.new(@length + 1) |
||
end |
||
def <=>(other) |
||
raise TypeError unless other.kind_of? Xs |
||
@length <=> other.length |
||
end |
||
def inspect |
||
'x' * @length |
||
end |
||
end |
||
|
||
r = Xs.new(3)..Xs.new(6) |
» | xxx..xxxxxx |
r.to_a |
» | [xxx, xxxx, xxxxx, xxxxxx] |
r.member?(Xs.new(5)) |
» | true |
mixins | |
Enumerable: | collect, detect, each_with_index, entries, find, find_all, grep, include?, map, max, member?, min, reject, select, sort, to_a |
class methods | |
new |
Range.new( start,
end, exclusive=false )
-> einBereich |
Konstruiert einen Bereich mit den angegebenen start- und end-Werten.
Wenn der dritte Parameter weggelassen wird oder false ist, enthält der
Bereich das End-Objekt, sonst wird es weggelassen.
|
instance methods | ||
=== | rng === einObjekt-> true oder false |
Gibt true zurück, wenn einObjekt ein Element aus rng ist,
sonst false . Vereinbarungsgemäß ist === der Vergleichsoperator, der
in case -Anweisungen verwendet wird (sog. Fallgleichheit, d.Red.).
|
begin | rng.begin -> einObjekt | Gibt das erte Objekt in rng zurück. |
each | rng.each {| i | block }-> rng |
Durchläuft alle Elemente in rng und gibt jede von ihnen an den Codeblock weiter.
|
end | rng.end -> einObjekt |
Gibt das Objekt zurück, das das Ende von rng darstellt. Siehe auch
Range#length .
|
exclude_end? | rng.exclude_end?
-> true oder false |
Gibt true zurück, wenn der Endwert in rng ausgeschlossen ist.
|
first | rng.first -> einObjekt | Gibt das erste Objekt in rng zurück. |
last | rng.last -> einObjekt |
Synonym für Range#end .
|
length | rng.length -> einInteger |
Gibt die Anzahl der Objekte in rng zurück.
|
size | rng.size -> einInteger |
Synonym für Range#length .
|