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:
Klammern.
    6.1.1 Methodenrückgabewert
    Methoden können normal oder abnorm enden (terminieren). Ein abnormes Ende tritt auf, wenn die Methode eine Ausnahme auslöst. Die weiter oben gezeigte Methode
factorial
endet abnorm, wenn wir ihr ein Argument übergeben, das kleiner als
1
ist. Wenn eine Methode normal endet, dann ist der Wert des Methodenaufrufausdrucks der Wert des Ausdrucks, der innerhalb des Methodenrumpfs zuletzt ausgewertet wurde. In der Methode
factorial
ist dieser Ausdruck entweder
1
oder
n*factorial(n-1)
.
    Das Schlüsselwort
return
wird verwendet, um eine Rückkehr vor dem Ende der Methode zu erzwingen. Wenn dem Schlüsselwort
return
ein Ausdruck folgt, wird der Wert dieses Ausdrucks zurückgegeben. Wenn kein Ausdruck folgt, ist der Rückgabewert
nil
. In der folgenden Variante der Methode
factorial
wird das Schlüsselwort
return
benötigt:
def factorial(n)
raise "Ungültiges Argument" if n < 1
return 1 if n == 1
n * factorial(n-1)
end
    Wir könnten auch in der letzten Zeile dieses Methodenrumpfs
return
verwenden, um zu betonen, dass dieser Ausdruck der Rückgabewert der Methode ist. Es ist jedoch gängige Praxis,
return
wegzulassen, wo es nicht benötigt wird.
    Ruby-Methoden können mehr als einen Wert zurückgeben. Verwenden Sie dazu eine explizite
return
-Anweisung und trennen Sie die zurückzugebenden Werte durch ein Komma:
# Kartesische (x,y) in Polarkoordinaten (Abstand, Winkel) konvertieren
def polar(x,y)
return Math.hypot(y,x), Math.atan2(y,x)
end
    Wenn es mehr als einen Rückgabewert gibt, werden die Werte in einem Array gesammelt, und das Array wird zu einem einzigen Rückgabwert der Methode. Anstatt die Anweisung
return
mit mehreren Rückgabewerten zu verwenden, können wir einfach selbst ein Array von Werten erzeugen:
# Polarkoordinaten in kartesische Koordinaten konvertieren
def cartesian(magnitude, angle)
[magnitude*Math.cos(angle), magnitude*Math.sin(angle)]
end
    Methoden in dieser Form sind üblicherweise für den Einsatz bei der parallelen Wertzuweisung (siehe „4.5.5 Parallele Wertzuweisung“ ) gedacht, so dass jeder Rückgabewert einer einzelnen Variablen zugewiesen wird:
distance, theta = polar(x,y)
x,y = cartesian(distance,theta)
    6.1.2 Methoden und Ausnahmebehandlung
    Eine
def
-Anweisung, die eine Methode definiert, kann Code zur Ausnahmebehandlung in Form von
rescue
-,
else
- und
ensure
-Klauseln enthalten, genau wie eine
begin
-Anweisung. Diese Ausnahmebehandlungsklauseln stehen am Ende des Methodenrumpfs, aber vor dem
end
der
def
-Anweisung. In kurzen Methoden kann es besonders sauber sein, Ihre
rescue
-Klauseln der
def
-Anweisung zuzuordnen. Das bedeutet auch, dass Sie weder eine
begin
-Anweisung noch die damit einhergehende zusätzliche Einrückungsstufe brauchen, siehe „5.6.6 rescue mit Methoden-, Klassen- und Moduldefinitionen“ für weitere Details.
    6.1.3 Eine Methode für ein Objekt aufrufen
    Methoden werden immer für ein Objekt aufgerufen. (Dieses Objekt wird manchmal Empfänger genannt, Bezug nehmend auf ein objektorientiertes Paradigma, in dem Methoden als »Nachrichten« bezeichnet werden, die an Empfängerobjekte »gesendet« werden.) Innerhalb des Rumpfs einer Methode bezieht sich das Schlüsselwort
self
auf das Objekt, für das die Methode aufgerufen wurde. Wenn wir beim Aufruf einer Methode kein Objekt angeben, wird die Methode implizit für
self
aufgerufen.
    In Kapitel 7 werden Sie erfahren, wie man Methoden für Klassen von Objekten definiert. Beachten Sie jedoch, dass Sie bereits Beispiele für den Aufruf von Methoden für Objekte gesehen haben, etwa in Code wie diesem:
first = text.index(pattern)
    Wie die meisten objektorientierten Sprachen verwendet auch Ruby einen Punkt, um das Objekt von der Methode zu trennen, die dafür aufgerufen wird. Dieser Code übergibt den Wert der Variablen
pattern
an die Methode namens
index
des Objekts, das in der Variablen
text
gespeichert ist, und speichert den Rückgabewert in der Variablen
first
.
    6.1.4 Singleton-Methoden definieren
    Alle Methoden, die wir bisher definiert haben, sind globale Methoden. Wenn wir eine
def
-Anweisung wie die bisher gezeigten innerhalb einer
class
-Anweisung platzieren, werden die Methoden als Instanzmethoden der Klasse definiert; diese Methoden sind für alle Objekte definiert, die Instanzen der Klasse sind. (Klassen- und Instanzmethoden werden in Kapitel 7 erläutert.)
    Es ist jedoch auch möglich, die Anweisung
def
zu verwenden, um eine Methode für ein einzelnes gegebenes Objekt

Weitere Kostenlose Bücher