return

Konzept

Stand

nicht implementiert

Ursprung

siehe return.

Scope

Innerhalb einer 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 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

Ideen

geschachtelte Returns

return arbeitet grundsätzlich wie break für 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.