lua中loadstring和普通函数定义之间的区别?

时间:2019-11-07 08:24:00

标签: lua

我正在和Lua一起玩,链接如下:https://www.lua.org/pil/8.html。我有点困惑...

> i = 100
> local i=3
> f=loadstring("i=i+1")
> print(i)
100
> g=function() i=i+1 end
> print(i)
100
> f()
> print(i)
101
> g()
> print(i)
102

我的意思是,为什么f和g都不使用本地i?

1 个答案:

答案 0 :(得分:1)

您已经在one of your previous questions中找到了答案。

> local i=3

由于您在交互模式下使用Lua解释器,因此本地i仅在我上面引用的块中可见。因此,fg都增加了全局i,因为他们从引用的块中看不到本地i

考虑将Lua代码写入文件,然后通过例如lua file.lua执行它们。