我从手册http://lua-users.org/wiki/GotoStatement中读到了这个
我在循环中有一个类似的代码块:
while true do
if someCond == nil then
goto f -- invalid (forward jump into scope of local definition)
end
local x = 1
-- do something with x
::f::
end
这将失败并显示“...跳转到本地 x 的范围”
但为什么?如果在使用本地 x 之后执行跳转 - 它不再被触及 - 因此这里不再需要“本地 x”
当我只用 x = 1 (在全局中制作)切换本地 x 时,它工作正常。
这是疏忽还是缺少优化?例如,也许他们总是假设在跳转到标签后可以使用本地变量