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:
werden:
s = (1..3).to_set
s.to_a # => [1, 2, 3]
s.to_s # => "#": nicht nützlich
s.inspect # => "#": nützlich
s == Set[3,2,1] # => true: verwendet eql?, um Setelemente zu vergleichen
    Die Methode
classify
erwartet einen Block, dem es nach und nach jedes Setelement übergibt. Der Rückgabewert ist ein Hash, der die Rückgabewerte des Blocks auf die Elemente abbildet, die zu diesem Wert führten:
# Klassifiziere Setelemente als gerade oder ungerade
s = (0..3).to_set # => #
s.classify {|x| x%2} # => {0=>#, 1=>#}
    Die Methode
divide
ist ähnlich, gibt aber ein Set mit Subsets zurück, statt eines Hash, der Werte auf Subsets abbildet:
s.divide {|x| x%2} # => #, #}>
    divide
verhält sich komplett anders, wenn der zugewiesene Block zwei Argumente erwartet. Dann sollte der Block
true
zurückgeben, wenn die beiden Werte zum gleichen Subset gehören, und
false
, wenn nicht:
s = %w[ant ape cow hen hog].to_set # Ein Set mit Wörtern
s.divide {|x,y| x[0] == y[0]} # Teile anhand des ersten Buchstabens in Subsets auf
# => #, #, #}>
    Wenn Sie ein Set mit Sets haben (die selbst rekursiv Sets enthalten können), lassen sich das Ganze mit
flatten
flachklopfen und (per Vereinigung) alle enthaltenen Sets zusammenfassen.
flatten!
macht das Gleiche mit dem Zielset selbst:
s = %w[ant ape cow hen hog].to_set # Ein Set mit Wörtern
t = s.divide {|x,y| x[0] == y[0]} # Aufteilen in Subsets
t.flatten! # Flachklopfen der Sets
t == s # => true

9.6 Dateien und Verzeichnisse
    Die Klasse
File
definiert eine ganze Reihe von Klassenmethoden zur Arbeit mit Dateien als Einträgen in einem Dateisystem: Methoden zum Prüfen der Größe oder Existenz über einen Dateinamen, oder zum Beispiel Methoden zum Abtrennen eines Dateinamens vom Verzeichnisnamen. Dabei handelt es sich um Klassenmethoden, die nicht mit
File
-Objekten arbeiten – stattdessen werden Dateinamen als Strings angegeben. Genauso definiert die Klasse
Dir
Klassenmethoden für die Arbeit mit Dateinamen und das Lesen von Dateinamen aus Verzeichnissen. Die folgenden Unterabschnitte zeigen unter anderem das:
    Arbeiten mit Datei- und Verzeichnisnamen,
Auflisten von Verzeichnisinhalten,
Prüfen von Dateien auf Typ, Größe, Änderungszeit und andere Attribute und
Löschen, Umbenennen und andere Aktivitäten mit Dateien und Verzeichnissen.
    Beachten Sie, dass die hier beschriebenen Methoden Dateien abfragen und bearbeiten, aber keine Datei inhalte lesen oder schreiben. Das Lesen und Schreiben von Dateien wird in „9.7 Ein-/Ausgabe“ behandelt.
    ----
    Dateinamen in Ruby 1.9 angeben
    Viele der in diesem Abschnitt beschriebenen Methoden erwarten eines oder mehrere Argumente, die Dateien benennen. Normalerweise geben Sie Datei- und Verzeichnisnamen als Strings an. In Ruby 1.9 können Sie andere Objekte verwenden, sofern diese eine Methode
to_path
besitzen, die einen String zurückgibt.
    ----
    9.6.1 Datei- und Verzeichnisnamen
    Die Klassenmethoden der Klassen
File
und
Dir
arbeiten mit Dateien und Verzeichnissen, die anhand ihres Namens definiert werden. Ruby verwendet Dateinamen im Unix-Stil mit
/
als Verzeichnistrenner. Sie können den normalen Schrägstrich in Ihren Dateinamen auch dann verwenden, wenn Ruby auf Windows verwendet wird. Unter Windows kann Ruby auch mit Dateinamen umgehen, die den Backslash verwenden und Laufwerksbuchstaben nutzen. Die Konstante
File::SEPARATOR
sollte in allen Implementierungen den Wert
'/'
haben.
File::ALT_SEPARATOR
ist unter Windows
'\'
, während dafür auf anderen Plattformen
nil
definiert ist.
    Die Klasse
File
definiert einige Methoden zum Bearbeiten von Dateinamen:
full = '/home/matz/bin/ruby.exe'
file=File.basename(full) # => 'ruby.exe': der eigentliche Dateiname ohne Verzeichnis
File.basename(full, '.exe') # => 'ruby': ohne Dateierweiterung
dir=File.dirname(full) # => '/home/matz/bin': kein / am Ende
File.dirname(file) # => '.': aktuelles Verzeichnis
File.split(full) # => ['/home/matz/bin', 'ruby.exe']
File.extname(full) # => '.exe'
File.extname(file) # => '.exe'
File.extname(dir) # => ''
File.join('home','matz') # => 'home/matz': relativ
File.join('','home','matz') # => '/home/matz': absolut
    Die Methode
File.expand_path
wandelt einen relativen Pfad in einen absoluten um. Wenn das optionale zweite Argument angegeben wird, wird es als Verzeichnis vor das erste Argument eingefügt. Das

Weitere Kostenlose Bücher