我讀這從手動http://lua-users.org/wiki/GotoStatement爲什麼Lua禁止轉到本地var定義?
我有一個循環類似的代碼塊:
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只有x = 1(在全球範圍內)它可以工作精細。
這是缺失的疏忽還是優化?例如。也許他們總是認爲在跳轉到標籤後可能會使用本地變種
您可以隨時使用'do'塊,以限制當地的範圍,如果它真的不需要再使用其中的標籤。 –
你能用代碼示例說明嗎? – Steve