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::::start::::done::::mein_label::Die goto-Anweisung springt zu einem angegebenen Label:
a = 0::start::a += 1goto done if a == 5goto start::done::print "a ist jetzt 5"a = 0::start::a += 1goto done if a == 5goto 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::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::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::Hinweise
Abschnitt betitelt „Hinweise“- 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