gpt4 book ai didi

lua - 在LUA中的函数内声明全局变量

转载 作者:行者123 更新时间:2023-12-04 17:19:44 25 4
gpt4 key购买 nike

我有一个函数,我在其中声明了一个全局变量 obs ,在函数内部并分配了一些值。如果我想在其他一些 lua 文件中访问它,它会给出错误:“尝试调用 obs 一个 nil 值,我需要做什么才能能够访问它?

这是它的虚拟代码

//A.lua
function X()
obs = splitText(lk,MAXLEN)
end

//B.lua
function Y()
for i=1, #obs do //error at this line
end
end

最佳答案

请记住,其他程序(Garry's Mod、魔兽世界、Vera、Domoticz)中的一些 Lua 程序使用 _ENV 而不是 _G 来限制它们的范围。所以全局变量必须是:

_ENV.variable = 1

代替:
_G.variable = 1

发生这种情况的原因是因为开发人员希望限制标准 Lua 库以避免用户访问方法如:os.exit()。

要查看是否使用 _ENV 而不是 _G,请将其打印出来,如果它返回一个表而不是 nil,则很可能使用它。您还可以使用以下代码段进行测试:
print(getfenv(1) == _G)
print(getfenv(1) == _ENV)

要打印的那个是你正在使用的那个。

关于lua - 在LUA中的函数内声明全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24327452/

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