【发布时间】:2020-12-07 11:40:27
【问题描述】:
for i = 1, 20 do --Create a loop
if i < 10 then
local function LessThan10()
return i
end
end
end
print(LessThan10())
令人惊讶的是,尽管
LessThan10在条件语句中并且它是一个local函数(实际上它不是函数,而是变量)。不知何故,我仍然可以打印出答案
这很有趣(我在 Zerobrane 中检查过,
LessThan10是一个本地函数)
编辑:嗯,我想这是我的解释器问题,我改变了解释器,这件事出错了。
【问题讨论】:
-
Nvm,我的 lua 版本过时了,对不起各位 B(
-
这从未奏效。也许您之前将
LessThan10定义为全局变量。 -
如果它不起作用,我不会发布这个问题。另外,这是基于 Lua 5.1 书中的示例(我没有复制粘贴)
-
这不是 5.0 或 5.1 中的合法代码。 Variables are visible until the end of the innermost block in which they are declared。在 5.0 和 5.4 中都是如此。其他事情正在发生。上面链接的可见性部分中的“基于示例”吗?显示了一个用函数闭包填充表的循环示例,但这不是发布的代码所做的。如果不是,这个示例代码是什么?