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:
von Anweisungen, die den Steuerungsablauf ( flow-of-control ) in einem Ruby-Programm modifizieren. Diese Anweisungen sind:
    return
Sorgt dafür, dass eine Methode beendet wird und ihrer aufrufenden Stelle einen Wert zurückgibt.
    break
Sorgt dafür, dass eine Schleife (oder ein Iterator) beendet wird.
    next
Sorgt dafür, dass eine Schleife (oder ein Iterator) den Rest der aktuellen Iteration überspringt und mit der nächsten weitermacht.
    redo
Startet eine Schleife oder einen Iterator am Anfang neu.
    retry
Startet einen Iterator neu und wertet den gesamten Ausdruck erneut aus. Das Schlüsselwort
retry
kann auch bei der Ausnahmebehandlung verwendet werden, wie wir weiter unten in diesem Kapitel sehen werden.
    throw/catch
Eine sehr allgemeine Kontrollstruktur, die so benannt ist und so funktioniert wie ein Weiterleitungs- und Behandlungsmechanismus für Ausnahmen.
throw
und
catch
sind nicht Rubys primärer Ausnahmemechanismus (das sind
raise
und
rescue
, die weiter unten in diesem Kapitel beschrieben werden). Stattdessen werden sie als eine Art mehrstufiges oder benanntes
break
verwendet.
    Die nachfolgenden Unterabschnitte beschreiben jede dieser Anweisungen im Detail.
    5.5.1 return
    Die Anweisung
return
sorgt dafür, dass die enthaltende Methode zu ihrer aufrufenden Stelle zurückkehrt. Wenn Sie C, Java oder eine ähnliche Sprache kennen, haben Sie wahrscheinlich bereits ein intuitives Verständnis für die Anweisung
return
. Überschlagen Sie diesen Abschnitt aber trotzdem nicht, weil das Verhalten von
return
innerhalb eines Blocks Ihnen womöglich nicht inituitiv erscheint.
    Auf
return
kann optional ein Ausdruck oder eine kommaseparierte Liste von Ausdrücken folgen. Wenn kein Ausdruck vorhanden ist, ist der Rückgabewert der Methode
nil
. Falls es einen Ausdruck gibt, wird der Wert dieses Ausdrucks zum Rückgabewert der Methode. Wenn hinter dem Schlüsselwort
return
mehr als ein Ausdruck steht, dann ist der Rückgabewert der Methode ein Array, das die Werte dieser Ausdrücke enthält.
    Beachten Sie, dass die meisten Methoden keine
return
-Anweisung benötigen. Wenn der Steuerungsablauf das Ende der Methode erreicht, kehrt die Methode automatisch zu ihrer aufrufenden Stelle zurück. Der Rückgabewert ist in diesem Fall der Wert des letzten Ausdrucks in der Methode. Die meisten Ruby-Programmierer lassen
return
weg, wenn es nicht notwendig ist. Anstatt als letzte Zeile einer Methode
return x
zu schreiben, schreiben sie einfach
x
.
    return
ist nützlich, wenn Sie vorzeitig aus einer Methode zurückkehren oder mehr als einen Wert zurückgeben möchten, zum Beispiel:
# Zwei Kopien von x liefern, falls x nicht nil ist
def double(x)
return nil if x == nil # Vorzeitig zurückkehren
return x, x.dup # Gibt mehrere Werte zurück
end
    Wenn man Ruby-Blöcke das erste Mal kennenlernt, ist es natürlich, sie sich als eine Art verschachtelter Funktion oder Minimethode vorzustellen. Und wenn Sie sie auf diese Weise verstehen, könnten Sie erwarten, dass
return
den Block einfach zu dem Iterator zurückkehren lässt, der ihn aufgerufen hat. Aber Blöcke sind keine Methoden, und das Schlüsselwort
return
arbeitet nicht so. Im Prinzip ist
return
bemerkenswert konsistent: Es sorgt immer dafür, dass die umschließende Methode zurückkehrt, unabhängig davon, wie tief es in Blöcke verschachtelt ist. [ 25 ]
    Beachten Sie, dass die umschließende Methode nicht dasselbe ist wie die aufrufende. Wenn die
return
-Anweisung in einem Block verwendet wird, sorgt sie nicht einfach dafür, dass der Block zurückkehrt. Und sie sorgt auch nicht einfach dafür, dass der Iterator, der den Block aufruft, zurückkehrt.
return
sorgt immer dafür, dass die umschließende Methode zurückkehrt. Die umschließende Methode, auch lexikalisch umschließende Methode genannt, ist die Methode, innerhalb der der Block steht, wenn Sie sich den Quellcode anschauen. Abbildung 5.2 illustriert das Verhalten der Anweisung
return
in einem Block.
    Abbildung 5.2 Die Anweisung return in einem Block
    Der folgende Code definiert eine Methode, die
return
verwendet, um aus dem Inneren eines Blocks zurückzukehren:
# Den Index des ersten Auftretens von target innerhalb eines Array
# oder nil zurückgeben. Beachten Sie, dass dieser Code einfach
# die Methode Array.index dupliziert.
def find(array, target)
array.each_with_index do |element,index|
    return index if (element == target) # Aus find zurückkehren
end
nil # nil zurückgeben, falls Element nicht

Weitere Kostenlose Bücher