负载字符串和Lua中正常函数定义之间的区别?

问题描述 投票:1回答:1

我正在和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?

lua
1个回答
1
投票

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

> local i=3

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

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

© www.soinside.com 2019 - 2024. All rights reserved.