Die Programmiersprache Ruby (German Edition)
Methodenaufrufe wegzulassen. Das ermöglicht den Einsatz von Ruby-Methoden, als seien sie Anweisungen, was eine wichtige Rolle für Rubys Eleganz spielt. Unglücklicherweise führt das zu einer schädlichen Whitespace-Abhängigkeit. Betrachten Sie die beiden folgenden Zeilen, die sich nur durch ein einzelnes Leerzeichen voneinander unterscheiden:
f(3+2)+1
f (3+2)+1
Die erste Zeile übergibt den Wert
5
an die Funktion
f
und addiert dann
1
zum Ergebnis hinzu. Da die zweite Zeile ein Leerzeichen hinter dem Funktionsnamen enthält, nimmt Ruby an, dass die Klammern um den Methodenaufruf weggelassen wurden. Die Klammern, die hinter dem Leerzeichen stehen, werden zur Gruppierung eines Teilausdrucks verwendet, aber der gesamte Ausdruck
(3+2)+1
wird als Methodenargument verwendet. Wenn Warnungen aktiviert sind (mit
-w
), gibt Ruby bei jedem Auftreten von mehrdeutigem Code wie diesem eine Warnung aus.
Die Lösung für diese Whitespace-Abhängigkeit ist einfach:
Setzen Sie niemals ein Leerzeichen zwischen einen Methodennamen und die öffnende Klammer.
Wenn das erste Argument einer Methode mit einer öffnenden Klammer beginnt, verwenden Sie immer Klammern für den Methodenaufruf. Schreiben Sie zum Beispiel
f((3+2)+1)
.
Starten Sie den Ruby-Interpreter immer mit der Option
-w
, damit er Sie warnt, wenn Sie eine dieser Regeln vergessen!
2.2 Syntaktische Struktur
Bisher haben wir die Tokens eines Ruby-Programms und die Zeichen, aus denen sie bestehen, besprochen. Nun fahren wir fort und beschreiben kurz, wie diese lexikalischen Tokens sich zu den größeren Syntaxstrukturen eines Ruby-Programms verbinden. Dieser Abschnitt beschreibt die Syntax von Ruby-Programmen vom einfachsten Ausdruck bis zu den umfangreichsten Modulen. Dieser Abschnitt ist im Prinzip ein Wegweiser durch die folgenden Kapitel.
Die grundlegende Syntaxeinheit in Ruby ist der Ausdruck ( expression ). Der Ruby-Interpreter wertet Ausdrücke aus ( to evaluate expressions ); daraus entstehen Werte. Die einfachsten Ausdrücke sind primäre Ausdrücke , die direkt Werte repräsentieren. Die weiter oben in diesem Kapitel beschriebenen Zahlen und String-Literale sind primäre Ausdrücke. Andere primäre Ausdrücke sind bestimmte Schlüsselwörter wie
true
,
false
,
nil
und
self
. Auch Variablenreferenzen sind primäre Ausdrücke; ihre Auswertung ergibt den Wert der Variablen.
Komplexere Werte können als zusammengesetzte Ausdrücke geschrieben werden:
[1,2,3] # Ein Array-Literal
{1=>"eins", 2=>"zwei"} # Ein Hash-Literal
1..3 # Ein Bereichsliteral
Operatoren werden verwendet, um Berechnungen mit Werten durchzuführen, und zusammengesetzte Ausdrücke werden durch die Kombination einfacherer Teilausdrücke durch Operatoren gebildet:
1 # Ein primärer Ausdruck
x # Ein weiterer primärer Ausdruck
x = 1 # Ein Zuweisungsausdruck
x = x + 1 # Ein Ausdruck mit zwei Operatoren
Kapitel 4 behandelt Operatoren und Ausdrücke, und auch Variablen und Zuweisungsausdrücke.
Ausdrücke können mit Ruby-Schlüsselwörtern kombiniert werden, um Anweisungen ( statements ) zu erhalten, etwa die
if
-Anweisung zur bedingten oder die
while
-Anweisung zur wiederholten Ausführung von Code:
if x < 10 then # Wenn dieser Ausdruck true ist ...
x = x + 1 # ... dann diese Anweisung ausführen
end # Kennzeichnet das Ende der bedingten Ausführung
while x < 10 do # Solange dieser Ausdruck true ist ...
print x # ... diese Anweisung ausführen
x = x + 1 # Dann diese Anweisung ausführen
end # Kennzeichnet das Ende der Schleife
In Ruby sind diese Anweisungen technisch gesehen Ausdrücke, aber es ist trotzdem praktisch, zwischen Ausdrücken, die den Kontrollfluss eines Programms beeinflussen, und solchen, die das nicht tun, zu unterscheiden. Kapitel 5 erläutert die Ruby-Kontrollstrukturen.
In allen Programmen außer den trivialsten müssen wir normalerweise in der Lage sein, Ausdrücke und Anweisungen zu parametrisierten Einheiten zu gruppieren, so dass sie wiederholt ausgeführt werden und mit wechselnden Eingaben arbeiten können. Möglicherweise kennen Sie diese parametrisierten Einheiten als Funktionen, Prozeduren oder Subroutinen. Da Ruby eine objektorientierte Sprache ist, heißen sie Methoden ( methods ). Methoden sind – gemeinsam mit den verwandten Strukturen Procs und Lambdas – das Thema von Kapitel 6 .
Gruppen von Methoden, die miteinander arbeiten sollen, können schließlich zu Klassen ( classes ) kombiniert werden, und Gruppen verwandter Klassen sowie von diesen Klassen
Weitere Kostenlose Bücher