2016-05-25 13 views
1

Ich habe Smalltalk Tutorial gelesen und diese Idee kam mir in den Sinn.Gibt es eine Sprache, in der wir den Wert als Ergebnis markieren können und dann den Körper der Funktion/Methode fortsetzen?

Nehmen wir an, wir haben eine Sprache und dort anstelle von return markieren wir einen Wert als endgültigen Rückgabewert und dann setzen wir die Methode fort, sobald das Methodenende erreicht ist - egal, was sonst noch aufgerufen wurde sonst manuell wie folgt angegeben: sagen lassen ^^ ist ein Operator, der für den Rücksprung markiert, wenn keine explizite Rückkehr bis zum Ende des Verfahrens

m1() 
{ 
^^1; 
some_other_code; 
} 

m2(par) 
{ 
^^2; 
if par == 1: return 1; 
some code; 
} 

m3(par) 
{ 
if par == 1: return 1; 
else if par == 0: ^^0; 
do some stuff; 
if par < 0: return -1; 
} 

m1() should return 1 
m2(0) should return 2 
m2(1) should return 1 
m3(0) should return 0 
m3(1) should return 1 
m3(-2) should return -1 

Dies ist ein wenig ähnlich wie ruby ​​Hahn(), aber nicht das gleiche gefunden

+0

Ich weiß ehrlich nicht, ob dies für [SO] am Thema sein könnte, oder nicht (als solcher stimme ich in keiner Weise (ob oben, unten oder "zu schließen")); aber die Art der gestellten Frage lässt mich vermuten, dass [programmers.se] * vielleicht besser passt. –

+1

@DavidThomas Wir schließen normalerweise "Liste der Sprachen" Fragen so auf Programmierer. – Ixrec

+0

@Ixrec: also vielleicht [softwarerecs.se]? –

Antwort

1

Pascal tat das. Der Rückgabewert wurde durch Zuweisung zum Funktionsnamen festgelegt. Swift macht etwas nicht ganz dasselbe: Sie können Code überall markieren, der ausgeführt wird, wenn die Funktion beendet wird. Ihre Rückgabebestätigung existiert, jedoch nur, nachdem anderer Code, der irgendwo anders geschrieben wurde, ausgeführt wird.

+1

VB6/VBA tut das auch (setzen Sie den Rückgabewert durch Zuweisung zum Funktionsnamen). –

+1

Visual Basic macht das auch. Sie könnten dem Funktionsnamen einen Wert zuweisen, der zurückgegeben wird, wenn das Ende der Funktion erreicht oder eine Anweisung 'Exit Function' erreicht wurde. Wenn es jedoch eine explizite "Return _value_" -Anweisung erreicht, wird stattdessen _Value_ zurückgegeben. –

+0

Genau darum bitte ich, danke! –