Die Programmiersprache Ruby (German Edition)
diverse existierende
String
-Methoden wie
chop
,
delete
und
tr
, so dass diese mit Mehr-Byte-Strings arbeiten können.
3.3 Arrays
Ein Array ist eine Folge von Werten, in der die Werte anhand ihrer Position oder ihres Index in der Folge ermittelt werden können. In Ruby hat der erste Wert in einem Array den Index 0. Die Methoden
size
und
length
geben die Anzahl der Elemente in einem Array zurück. Das letzte Element des Array befindet sich am Index
size-1
. Negative Indexwerte zählen vom Ende des Array aus, so dass das letzte Element eines Array auch mit dem Index
−1
angesprochen werden kann. Das vorletzte Element hat den Index
−2
, und so weiter. Wenn Sie versuchen, ein Element hinter dem Ende eines Arrays (mit einem Index >=
size
) oder vor dem Anfang eines Array (mit einem Index <
-size
) zu lesen, gibt Ruby einfach
nil
zurück und löst keine Ausnahme aus.
Ruby-Arrays sind untypisiert und veränderbar. Die Elemente eines Array brauchen nicht alle derselben Klasse anzugehören und können jederzeit geändert werden. Zudem kann sich die Größe von Arrays dynamisch ändern; Sie können Elemente anfügen, so dass sie je nach Bedarf wachsen. Wenn Sie einem Wert hinter dem Ende des Array einen Wert zuweisen, wird das Array automatisch durch
nil
-Elemente erweitert. (Es ist allerdings ein Fehler, einem Element vor dem Anfang eines Array einen Wert zuzuweisen.)
Ein Array-Literal ist eine durch kommaseparierte, von eckigen Klammern umschlossene Liste von Werten.
[1, 2, 3] # Ein Array, das drei Fixnum-Objekte enthält
[-10...0, 0..10,] # Ein Array mit zwei Bereichen; Kommata am Ende erlaubt
[[1,2],[3,4],[5]] # Ein Array aus verschachtelten Arrays
[x+y, x-y, x*y] # Array-Elemente können beliebige Ausdrücke sein
[] # Das leere Array hat die Größe 0
Ruby enthält eine spezielle Syntax, um Array-Literale darzustellen, deren Elemente kurze Strings ohne Leerzeichen sind:
words = %w[dies ist ein Test] # Entspricht: ['dies', 'ist', 'ein', 'Test']
open = %w| ( [ { < | # Entspricht: ['(', '[', '{', '<']
white = %W(\s \t \r \n) # Entspricht: ["\s", "\t", "\r", "\n"]
%w
and
%W
beginnen ein Array-Literal, genau wie
%q
und
%Q
ein
String
-Literal einleiten. Insbesondere gelten für
%w
und
%W
dieselben Begrenzungszeichen-Regeln wie für
%q
and
%Q
. Innerhalb der Begrenzungszeichen werden keine Anführungszeichen um die Array-Element-Strings und keine Kommata zwischen den Elementen benötigt. Array-Elemente werden durch Whitespace voneinander getrennt.
Sie können Arrays auch mithilfe des Konstruktors
Array.new
erzeugen, der Ihnen Optionen zur programmierten Initialisierung der Array-Elemente bereitstellt:
empty = Array.new # []: Gibt ein neues, leeres Array zurück
nils = Array.new(3) # [nil, nil, nil]: Neues Array mit 3 nil-Elementen
zeros = Array.new(4, 0) # [0, 0, 0, 0]: Neues Array mit 4 0-Elementen
copy = Array.new(nils) # Neue Kopie eines existierenden Array erstellen
count = Array.new(3) {|i| i+1} # [1,2,3]: 3 aus dem Index berechnete Elemente
Um den Wert eines Array-Elements zu ermitteln, verwenden Sie einen einzelnen Integer in eckigen Klammern:
a = [0, 1, 4, 9, 16] # Array enthält die Quadrate der Indizes
a[0] # Erstes Element ist 0
a[-1] # Letztes Element ist 16
a[-2] # Vorletztes Element ist 9
a[a.size-1] # Andere Methode, das letzte Element zu ermitteln
a[-a.size] # Andere Methode, das erste Element zu ermitteln
a[8] # Abfrage hinter dem Ende gibt nil zurück
a[-8] # Abfrage vor dem Anfang gibt auch nil zurück
Alle oben gezeigten Ausdrücke außer dem letzten können auch auf der linken Seite einer Wertzuweisung verwendet werden:
a[0] = "Null" # a ist ["Null", 1, 4, 9, 16]
a[-1] = 1..16 # a ist ["Null", 1, 4, 9, 1..16]
a[8] = 64 # a ist ["Null", 1, 4, 9, 1..16, nil, nil, nil, 64]
a[-9] = 81 # Fehler: keine Zuweisung vor dem Array-Anfang möglich
Genau wie Strings können auch Arrays mit zwei Integer-Werten indexiert werden, die einen Startindex und eine Anzahl von Elementen angeben, sowie mit einem
Range
-Objekt. In beiden Fällen gibt der Ausdruck das angegebene Teil-Array zurück:
a = ('a'..'e').to_a # Range konvertiert in ['a', 'b', 'c', 'd', 'e']
a[0,0] # []: Dieses Teil-Array hat null Elemente
a[1,1] # ['b']: Ein Array mit einem Element
a[-2,2] # ['d','e']: Die letzten beiden Elemente des Array
a[0..2] # ['a', 'b', 'c']: Die ersten drei Elemente
a[-2..-1] # ['d','e']: Die letzten beiden Elemente des Array
a[0...-1] # ['a', 'b', 'c', 'd']: Alle Elemente außer dem letzten
Bei Verwendung auf der
Weitere Kostenlose Bücher