loadstring 和普通函数定义在 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?

点赞
用户4567755
用户4567755

你在 之前的问题 中已经得到了这个问题的回答。

> local i=3

由于你是在交互模式下使用 Lua 解释器,所以只有在我引用的这个块中才能看到局部变量 i。 因此,fg 都会增加全局变量 i,因为它们看不到引用代码块中的局部变量 i

考虑将你的 Lua 代码写入文件中,然后通过 lua file.lua 等方式来执行它们。

2019-11-07 08:39:58