Die Programmiersprache Ruby (German Edition)
unabhängiger Methoden können in Modulen ( modules ) organisiert werden. Klassen und Module sind das Thema von Kapitel 7 .
2.2.1 Blockstruktur in Ruby
Ruby-Programme haben eine Blockstruktur. Modul-, Klassen- und Methodendefinitionen sowie die meisten Ruby-Anweisungen enthalten Blöcke verschachtelten Codes. Diese Blöcke werden durch Schlüsselwörter oder Zeichensetzung begrenzt und konventionsgemäß um zwei Zeichen gegenüber ihrer Umgebung eingrückt. Es gibt zwei Arten von Blöcken in Ruby-Programmen. Eine von ihnen wird formal als »Block« bezeichnet. Diese Blöcke sind Codebereiche, die mit Iteratormethoden verknüpft sind oder an diese übergeben werden:
3.times { print "Ruby! " }
In diesem Code bilden die geschweiften Klammern und der enthaltene Code den Block, der mit dem Iteratormethodenaufruf
3.times
verknüpft ist. Formale Blöcke dieser Art können durch geschweifte Klammern oder auch durch die Schlüsselwörter
do
und
end
begrenzt werden:
1.upto(10) do |x|
print x
end
Die Begrenzer
do
und
end
werden normalerweise verwendet, wenn der Block in mehr als eine Zeile geschrieben wird. Beachten Sie die Einrückung um zwei Zeichen innerhalb des Blocks. Blöcke werden in „5.4 Blöcke“ behandelt.
Um Verwechslungen mit diesen echten Blöcken zu vermeiden, können wir die andere Art von Block einen Rumpf ( body ) nennen (in der Praxis wird der Begriff »Block« allerdings oft für beides verwendet). Ein Rumpf ist genau die Liste von Anweisungen, die den Rumpf einer Klassendefinition, einer Methodendefinition, einer
while
-Schleife oder von etwas Ähnlichem bildet. Rümpfe werden in Ruby niemals durch geschweifte Klammern begrenzt – stattdessen dienen in der Regel Schlüsselwörter als Begrenzungen. Die spezifische Syntax für Anweisungs-, Methoden- sowie Klassen- und Modulrümpfe wird in Kapitel 5 , Kapitel 6 beziehungsweise Kapitel 7 dokumentiert.
Rümpfe und Blöcke können ineinander verschachtelt werden, und Ruby-Programme besitzen üblicherweise diverse Ebenen von verschachteltem Code, die durch ihre relative Einrückung lesbar gemacht werden. Hier sehen Sie ein schematisches Beispiel:
module Stats # Ein Modul
class Dataset # Eine Klasse im Modul
def initialize(filename) # Eine Methode in der Klasse
IO.foreach(filename) do |line| # Ein Block in der Methode
if line[0,1] == "#" # Eine if-Anweisung im Block
next # Eine einfache Anweisung im if
end # Ende des if-Rumpfes
end # Ende des Blocks
end # Ende des Methodenrumpfes
end # Ende des Klassenrumpfes
end # Ende des Modulrumpfes
2.3 Dateistruktur
Es gibt nur einige wenige Regeln dafür, wie eine Ruby-Codedatei strukturiert sein muss. Diese Regeln hängen mit dem Deployment von Ruby-Programmen zusammen und sind nicht direkt für die Sprache selbst relevant.
Falls ein Ruby-Programm erstens einen »Shebang«-Kommentar enthält, um dem (Unix-artigen) Betriebssystem mitzuteilen, wie es ausgeführt werden soll, dann muss dieser Kommentar in der ersten Zeile stehen.
Wenn ein Ruby-Programm zweitens einen »Coding«-Kommentar enthält (wie in „2.4.1 Die Programmkodierung festlegen“ beschrieben), dann muss dieser Kommentar in der ersten Zeile stehen – oder in der zweiten, falls die erste Zeile eine Shebang ist.
Falls eine Datei drittens eine Zeile enthält, die aus dem einzelnen Token
__END__
ohne Whitespace davor oder dahinter besteht, dann beendet der Ruby-Interpreter die Ausführung der Datei an dieser Stelle. Der Rest der Datei kann beliebige Daten enthalten, die das Programm mit Hilfe des
IO
-Stream-Objekts
DATA
lesen kann. (In Kapitel 10 und „9.7 Ein-/Ausgabe“ finden Sie mehr über diese globale Konstante.)
Ruby-Programme müssen nicht in eine einzelne Datei gepackt werden. Viele Programme laden beispielsweise zusätzlichen Ruby-Code aus externen Bibliotheken. Programme verwenden
require
, um Code aus einer anderen Datei zu laden.
require
sucht anhand eines Suchpfads nach den angegebenen Codemodulen und verhindert, dass irgendein bestimmtes Modul mehr als einmal geladen wird. Siehe „7.6 Laden von Modulen“ für Details.
Der folgende Code verdeutlicht jeden dieser Punkte der Ruby-Dateistruktur:
#!/usr/bin/ruby -w Shebang-Kommentar
# -*- coding: utf-8 -*- Coding-Kommentar
require 'socket' Netzwerkbibliothek laden
... Programmcode an diese Stelle
__END__ Kennzeichnet Ende des Codes
... Programmdaten an diese Stelle
2.4 Programmkodierung
Auf der untersten Ebene ist ein Ruby-Programm einfach eine Abfolge von Zeichen.
Weitere Kostenlose Bücher