Lewati ke konten

Goto

YueScript mendukung pernyataan goto dan sintaks label untuk mengontrol alur program, mengikuti aturan yang sama dengan pernyataan goto Lua. Catatan: Pernyataan goto memerlukan Lua 5.2 atau lebih tinggi. Saat mengompilasi ke Lua 5.1, penggunaan sintaks goto akan menyebabkan galat kompilasi.

Label didefinisikan menggunakan dua titik dua:

::mulai::
::selesai::
::label_saya::

Pernyataan goto melompat ke label yang ditentukan:

a = 0
::mulai::
a += 1
goto selesai if a == 5
goto mulai
::selesai::
print "a sekarang 5"

Pernyataan goto berguna untuk keluar dari loop yang bersarang dalam:

for z = 1, 10
for y = 1, 10 do for x = 1, 10
if x^2 + y^2 == z^2
print 'tripel Pythagorean ditemukan:', x, y, z
goto ok
::ok::

Anda juga dapat menggunakan label untuk melompat ke tingkat loop tertentu:

for z = 1, 10
for y = 1, 10
for x = 1, 10
if x^2 + y^2 == z^2
print 'tripel Pythagorean ditemukan:', x, y, z
print 'mencoba z berikutnya...'
goto zcontinue
::zcontinue::
  • Label harus unik dalam cakupannya
  • goto dapat melompat ke label pada tingkat cakupan yang sama atau luar
  • goto tidak dapat melompat ke cakupan dalam (seperti di dalam blok atau loop)
  • Gunakan goto dengan hemat, karena dapat membuat kode lebih sulit dibaca dan dipelihara

YueScriptKompiler

Memuat kompiler…