<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Gibt es eine Möglichkeit, sauber aus einer Funktion herauszuspringen?So etwas wie das brechen() Funktion in einer for-Schleife.ich habe es versucht Wurf() aber das stoppt das gesamte JSL-Skript.
Könnten Sie verwenden zurückkehren() ?
Ich füge oft fehleranfällige Ausdrücke in Try() ohne Throw() ein. Die Platzierung von Try() – innerhalb der Funktion oder „um“ den Funktionsaufruf – hängt davon ab, ob ich nur Teile der Funktion maskieren möchte oder sie im Ausnahmefall vollständig maskieren möchte. Throw() stoppt die Ausführung und ich verwende es hauptsächlich zum Debuggen.
Vergleichen Sie diese Beispiele und ihre Ausgabe:
//Try() innerhalb der Funktion maskiert ausgewählte Teile der Funktion, die Skriptausführung wird fortgesetzt.
exsqr = Funktion ( { X } ,
x2 = Versuchen ( X * X , „Fehler, weitermachen!“) ;
Zeigen ( „Zeige dies, auch wenn x NaN ist“ ) ;
x2 ;
) ;
Quadrat = exsqr ( "Q" ) ;
Zeigen ( Quadrat , „Funktions-Escape fehlgeschlagen, aber das Skript wurde fortgesetzt“ ) ;
//Try() umschließt die Funktionsaufruf-Escape-Funktion und die Skriptausführung wird fortgesetzt.
exsqr = Funktion ( { X } ,
x2 = X * X ;
Zeigen ( „Zeige dies nicht, wenn x NaN ist“ ) ;
x2 ;
) ;
Quadrat = Versuchen ( exsqr ( "Q" ) ) ;
Zeigen ( Quadrat , „Funktionsflucht erfolgreich!“) ;
//Try() mit Throw() maskiert Funktion und Skript.
exsqr = Funktion ( { X } ,
x2 = Versuchen ( X * X , Wurf ( „Fehler, hör hier auf!: " || Verkohlen ( Ausnahme_Nachricht ) ) ) ;
Zeigen ( „Zeige dies nicht, wenn x NaN ist“ ) ;
) ;
Quadrat = exsqr ( "Q" ) ;
Zeigen ( Quadrat , „Skript gestoppt!“) ;
Beim Versuch, eine Funktion mit return() zu beenden, wird mir eine Fehlermeldung angezeigt.
Ich erhalte den Fehler, wenn ich eine Schaltflächenbox erstelle
bb = Button Box("SpecsAuto")dann fügen Sie eine Funktion an
bb << Set Function( Return() )
Klicken Sie dann auf das Kästchen.
Hier ist der Democode zum Reproduzieren des Fehlers:
nw = New Window("Win1");
nw << Append(bb = Button Box("SpecsAuto"));
bb << Set Function(
Print("A");
Return();
Print("B");
);
bb << Click();

set function() funktioniert auch, wenn keine Funktion angegeben ist – wie in Ihrem Skript.
Um die Magie von return() zu nutzen, müssen Sie es in eine Funktion einfügen:
nw = New Window("Win1");
nw << Append(bb = Button Box("SpecsAuto"));
bb << Set function(Function({},
Print("A");
Return();
Print("B");)
);
bb << Click();