マニュアル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を切り替えると、正常に機能します。
それは見落としですか、それとも最適化が欠けていますか?たとえば、ラベルにジャンプした後、ローカル変数を使用できると常に想定している可能性があります