Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
ist intern als Sekunden seit dem (plattformabhängigen) Nullpunkt gespeichert
t = Time.now.to_i # => 1184036194 Sekunden seit dem Nullpunkt
Time.at(t) # => Sekunden seit dem Nullpunkt in ein Time-Objekt
t = Time.now.to_f # => 1184036322.90872: einschließlich 908720 Mikrosekunden
Time.at(0) # => Wed Dec 31 16:00:00 −0800 1969: Nullpunkt in lokaler Zeit

9.5 Collections
    Dieser Abschnitt behandelt die Collection -Klassen von Ruby. Eine Collection ist jede Klasse, die eine Sammlung von Werten repräsentiert.
Array
und
Hash
sind die grundlegenden Collection-Klassen in Ruby, während die Standardbibliothek die Klasse
Set
hinzufügt. Jede dieser Collection-Klassen mixt das Modul
Enumerable
hinein, was heißt, dass die Methoden von
Enumerable
allgemein nutzbare Collection-Methoden sind.
    9.5.1 Enumerierbare Objekte
    Das Modul
Enumerable
ist ein Mixin, das eine Reihe von nützlichen Methoden aufbauend auf dem Iterator
each
implementiert. Die Klassen
Array
,
Hash
und
Set
, die weiter unten beschrieben werden, binden alle
Enumerable
ein und implementieren daher auch alle hier beschriebenen Methoden.
Range
und
IO
sind weitere erwähnenswerte enumerierbare Klassen.
Enumerable
wurde kurz in „5.3.2 Enumerable-Objekte“ behandelt. Dieser Abschnitt hier geht mehr ins Detail.
    Beachten Sie, dass manche enumerierbare Klassen eine natürliche Aufzählungsordnung haben, denen ihre Methode
each
folgt. Arrays enumerieren zum Beispiel ihre Elemente mit steigendem Array-Index.
Range
enumeriert in aufsteigender Reihenfolge. Und
IO
-Objekte enumerieren Textzeilen in der Reihenfolge, in der sie aus der zugrunde liegenden Datei oder dem Socket gelesen werden. In Ruby 1.9 enumerieren
Hash
und
Set
(das auf
Hash
basiert) in der Reihenfolge, in der die Elemente eingefügt wurden. Vor Ruby 1.9 allerdings enumerieren diese Klassen ihre Elemente in einer recht willkürlichen Reihenfolge.
    Viele Methoden von
Enumerable
liefern eine verarbeitete Version der enumerierbaren Collection oder eine ausgewählte Untermenge ihrer Elemente zurück. Wenn eine
Enumerable
-Methode eine Collection zurückgibt (und keinen einzelnen Wert einer Collection), handelt es sich dabei im Allgemeinen um ein
Array
. Das ist allerdings nicht immer der Fall. Die Klasse
Hash
überschreibt zum Beispiel die Methode
reject
so, dass sie ein
Hash
-Objekt statt eines Array zurückliefert. Was auch immer der Rückgabewert genau ist – Sie können davon ausgehen, dass ein von einer
Enumerable
-Methode zurückgegebener Wert selbst enumerierbar ist.
    9.5.1.1 Iterieren und Konvertieren von Collections
    Per Definition muss jedes
Enumerable
-Objekt einen Iterator
each
besitzen.
Enumerable
stellt eine einfache Variante
each_with_index
bereit, die ein Element aus der Collection und einen Integer-Wert zurückgibt. Bei Arrays ist der Integer-Wert der Array-Index. Bei
IO
-Objekten ist diese Zahl die Zeilennummer (beginnend bei
0
). Bei anderen Objekten handelt es sich bei dem Integer-Wert um den Array-Index, den das Element hätte, wenn die Collection in ein Array umgewandelt würde:
(5..7).each {|x| print x } # Ausgabe "567"
(5..7).each_with_index {|x,i| print x,i } # Ausgabe "506172"
    In Ruby 1.9 definiert
Enumerable
die Methode
cycle
, die wiederholt über die Elemente der Collection iteriert und so lange läuft, bis der von Ihnen bereitgestellt Block die Iteration explizit mit
break
,
return
oder durch das Werfen einer Exception beendet. Während des ersten Durchlaufs über das
Enumerable
-Objekt speichert
cycle
die Elemente in einem Array und iteriert danach wiederholt nur darüber. Das bedeutet, dass Änderungen an der Collection nach dem ersten Durchlauf keinen Einfluss auf das Verhalten von
cycle
haben.
    each_slice
und
each_cons
sind Iteratoren, die Unter-Arrays einer Collection ausgeben. Sie sind in Ruby 1.8 per
require 'enumerator'
erreichbar und in Ruby 1.9 Teil der Core-Bibliothek.
each_slice(n)
iteriert über die enumerierbaren Werte in »Abschnitten« der Größe
n
:
(1..10).each_slice(4) {|x| print x } # Ausgabe "[1,2,3,4][5,6,7,8][9,10]"
    each_cons
entspricht
each_slice
, nutzt aber ein »gleitendes Fenster« auf der enumerierbaren Collection:
(1..5).each_cons(3) {|x| print x } # Ausgabe "[1,2,3][2,3,4][3,4,5]"
    Die Methode
collect
wendet einen Block auf jedes Element einer Collection an und sammelt die Rückgabewerte des Blocks in einem neuen Array.
map
ist ein Synonym – es bildet die Elemente einer Collection auf die Elemente eines Array ab, indem es einen Block auf

Weitere Kostenlose Bücher