====== return ====== ===== Konzept ===== [[de:dev:concept:Function]] ===== Stand ===== nicht implementiert ===== Ursprung ===== siehe [[de:dev:ext:return]]. ===== Scope ===== Innerhalb einer [[de:dev:scope:Function]] ===== Rückgabe ===== return gibt neutral zurück, um das folgende Konstrukt zu ermöglichen: x = bla() || return false; ===== Beschreibung ===== Sofern allen zu initialisierenden Rückgabeparametern ein Wert zugewiesen wurde, darf die Funktion verlassen werden. Wurde nicht allen Rückgabe-Parametern ein Wert zu gewiesen, so können die fehlenden Werte noch mit der return-Anweisung beschrieben werden. Wird nur ein Wert zurückgegeben, so kann return wie in C nur mit einem Wert aufgerufen werden. return darf nur ohne Zuweisungen stehen, wenn alle Rückgabeparameter, die initialisiert werden müssen entweder im [[scope:function|Functionscope]] an dieser Stelle initialisiert sind oder es keinen RÜckgabewert gibt. ==== Beispiele ==== code( Window * result=null ) MyOpenWin := { /* TODO: Implement */ return; } code( Window * result ) MyOpenWin := { /* TODO: Implement */ return null; } code MyOpenWin := { /* TODO: Implement */ return; } ===== siehe auch ===== [[assert]], [[if]], [[else]], [[fail]] ===== Ideen ===== ==== geschachtelte Returns ===== return arbeitet grundsätzlich wie [[break]] für [[scope:loop|Schleifenscopes]]. Wenn man Funktionen innerhalb von Funktionen anlegen kann, so wäre es interessant ein Return auf die höher definierte Funktion ausüben zu können. code( int ) main := { code( int; int a ) func := { if( main::a + a == 10 ) return from main ExitSuccess; return a + 1; } int a = 0; while( a : func( a )); print "Dies wird niemals aufgerufen\n"; } Anmerkung: Der Beispielcode ist genau das, was man damit nicht machen sollte. Es sollte eine Möglichkeit sein, weitere Fragen in main() zu vermeiden und nicht die Schleife zu steuern.