gpt4 book ai didi

function - Lua "require"与全局 "local"?

转载 作者:行者123 更新时间:2023-12-04 13:02:47 31 4
gpt4 key购买 nike

显然我有一些混淆,但我认为通过在“main.lua”中使用类似的东西:

local module = require("module")
local var = "I should be global?"
printthis()

与 module.lua 包含类似的东西:
function printthis()
print(var)
end

printthis(var)可以正常工作,因为现在 module.lua 代码在 main.lua 中,不是吗?相反,printthis 不知道 var 是什么是。我读到尽可能在 Lua 变量上使用“本地”是一种很好的做法,但在这种情况下,我是否必须制作 var全局或module.lua的 printthis()有办法吗读取函数 var适本地?

最佳答案

不,这根本不是它的工作原理。

Lua 解释器提供了一个全局表,通常称为 _G,除非你正在做一些古怪的事情。

function printthis()
print(var)
end

这实际上转化为
_G.printthis = function()
_G.print(_G.var);
end

你在 main 中的代码等于
local module = _G.require("module")
local var = "I should be global?"
_G.printthis()

但是当你调用 printthis - _G.var 去哪儿了准备好了吗?无处。所以这个变量是 nil,就像所有其他对那个键没有任何东西的表的访问一样。

这可能不方便,但从长远来看,传递参数比设置全局变量要好得多。一旦你对程序进行任何更改,就完全不可能进行任何更改,因为逻辑没有结构,如果不阅读每一行代码并立即理解它,你不知道发生了什么。另外,你只能在一个地方使用每个键,因为它是一个全局表——所以我当然希望没有其他人想使用“var”作为变量名,而且你不介意你的代码默默地失败,因为你有一个全局表名字错了。

关于function - Lua "require"与全局 "local"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6586145/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com