Goto
YueScript 支持 goto 语句和标签语法来控制程序流程,该语法遵循与 Lua 的 goto 语句相同的规则。注意: goto 语句需要 Lua 5.2 或更高版本。当编译目标是 Lua 5.1 时,使用 goto 语法将导致编译错误。
标签使用双冒号定义:
::开始::::结束::::我的标签::::开始::::结束::::我的标签::goto 语句可以跳转到指定的标签:
a = 0::开始::a += 1goto 结束 if a == 5goto 开始::结束::print "a 现在是 5"a = 0::开始::a += 1goto 结束 if a == 5goto 开始::结束::print "a 现在是 5"goto 语句对于跳出深层嵌套循环非常有用:
for z = 1, 10 for y = 1, 10 do for x = 1, 10 if x^2 + y^2 == z^2 print '找到勾股数:', x, y, z goto 完成::完成::for z = 1, 10 for y = 1, 10 do for x = 1, 10 if x^2 + y^2 == z^2 print '找到勾股数:', x, y, z goto 完成::完成::你也可以使用标签跳转到特定的循环层级:
for z = 1, 10 for y = 1, 10 for x = 1, 10 if x^2 + y^2 == z^2 print '找到勾股数:', x, y, z print '尝试下一个 z...' goto 继续z ::继续z::for z = 1, 10 for y = 1, 10 for x = 1, 10 if x^2 + y^2 == z^2 print '找到勾股数:', x, y, z print '尝试下一个 z...' goto 继续z ::继续z::- 标签在其作用域内必须唯一
- goto 可以跳转到相同或外层作用域级别的标签
- goto 不能跳转到内层作用域(如代码块或循环内部)
- 谨慎使用 goto,因为它会使代码更难阅读和维护