array |
ist die eingebaute Ruby Klasse für Felder.
|
|
Diese Felder sind flexibler als Felder in den Sprachen C und Java.
Ruby Felder sind besser vergleichbar mit Listen aus LISP, Tcl oder
Haskell.
|
Literale |
für Listen
|
|
[]
[1, 2, 3]
["abc", "xyz", "123"]
[nil, 1, "abc", [], ["x", "y"]]
%w{abc xyz 123}
|
| |
Erzeugung |
von Listen
|
|
Array.new
Array.new(2)
Array.new(2,42)
|
|
In dem letzten Beispiel wird die Referenz auf das für die Intitalisierung
verwendete Objekt in jede Zelle des Feldes eingetragen.
Es wird keine Kopie der Objekte angelegt.
|
|
==> keine referenzielle Transparenz.
|
| |
Indizierter Zugriff |
auf Listenelemente
|
Lesende Zugriffe |
a = [5, 6, 7]
a[0]
a[2]
a[3]
a[-1]
a[-3]
a[-4]
a[0..1]
a[1..3]
a[3..1]
a[-3..-1]
a[-1..-3]
|
|
a[i] ist ein Alias für a.slice(i)
|
|
a.first entspricht a[0]
|
|
a.last entspricht a[-1]
|
Schreibende Zugriffe |
a = [5, 6, 7]
a[0]=1 ; a
a[3]=42 ; a
a[6]=43 ; a
a[3]
a[1..2]=[2,3,4] ; a
a[3]
a[1..2]=[] ; a
a[0..0]=[] ; a
|
|
a.shift entspricht a[0..0]=[]
|
|
a.pop entspricht a[-1..-1]=[]
|
| |
Weitere Operationen |
auf Listen
|
|
a = [4, 1, 2]
a.length
a.size
a.min
a.max
b = ["a","b","c"]
b.max
c = [1,2,3,"a","b","c"]
c.max
a.sort
a
b.sort
c.sort
a.sort!
a
a.reverse
a = [4, 1, 2]
a[a.length] = 3 ; a
a = [4, 1, 2]
a << 3
a = [4, 1, 2]
a[a.length..a.length] = [3, 7, 9]
a
a = [4, 1, 2]
a = a + [3, 7, 9]
|
| |
Suchen |
in Listen
|
|
a = ["abc", "xyz", "zzz"]
a.index("zzz")
a.index("123")
a.index(a.max)
a.grep(/a/)
a.grep(/z/)
a.grep(/^z/)
|
|
Es gibt eine Reihe weiterer Suchfunktionen, die mit Blöcken arbeiten.
|
| |
Mengenoperationen |
auf Listen
|
|
a = [1, 2, 3, 1]
b = [3, 4, 5]
a.uniq
a
a.uniq!
a
a.uniq!
a
a - b
b - a
a + b
b + a
(a + b).uniq
(b + a).uniq
(a - b) + (b - a)
(a + b) - ((a - b) + (b - a))
((a + b) - ((a - b) + (b - a))).uniq
|
| |
|