Zum Inhalt springen

Goto

YueScript unterstützt die goto-Anweisung und die Label-Syntax zur Steuerung des Programmflusses, wobei die gleichen Regeln wie bei Luas goto-Anweisung gelten. Hinweis: Die goto-Anweisung erfordert Lua 5.2 oder höher. Beim Kompilieren zu Lua 5.1 führt die Verwendung der goto-Syntax zu einem Kompilierfehler.

Ein Label wird mit doppelten Doppelpunkten definiert:

::start::
::done::
::mein_label::

Die goto-Anweisung springt zu einem angegebenen Label:

a = 0
::start::
a += 1
goto done if a == 5
goto start
::done::
print "a ist jetzt 5"

Die goto-Anweisung ist nützlich, um aus tief verschachtelten Schleifen zu springen:

for z = 1, 10
for y = 1, 10 do for x = 1, 10
if x^2 + y^2 == z^2
print 'Pythagoreisches Tripel gefunden:', x, y, z
goto ok
::ok::

Sie können auch Labels verwenden, um zu einer bestimmten Schleifenebene zu springen:

for z = 1, 10
for y = 1, 10
for x = 1, 10
if x^2 + y^2 == z^2
print 'Pythagoreisches Tripel gefunden:', x, y, z
print 'versuche nächstes z...'
goto zcontinue
::zcontinue::
  • Labels müssen innerhalb ihres Geltungsbereichs eindeutig sein
  • goto kann zu Labels auf derselben oder äußeren Geltungsbereichsebenen springen
  • goto kann nicht in innere Geltungsbereiche springen (wie in Blöcke oder Schleifen)
  • Verwenden Sie goto sparsam, da es den Code schwieriger zu lesen und zu warten machen kann

YueScriptCompiler

Compiler wird geladen…