我在 LuaJIT 工作,我所有的库和其他东西都存储在“foo”中,如下所示:
foo = {}; -- The only global variable
foo.print = {};
foo.print.say = function(msg) print(msg) end;
foo.print.say("test")
现在我想知道,是否会使用元表并保持所有库的本地帮助?或者这不重要。我想到的是这样的:
foo = {};
local libraries = {};
setmetatable(foo, {
__index = function(t, key)
return libraries[key];
end
});
-- A function to create a new library.
function foo.NewLibrary(name)
libraries[name] = {};
return libraries[name];
end;
local printLib = foo.NewLibrary("print");
printLib.say = function(msg) print(msg) end;
-- Other file:
foo.print.say("test")
我现在真的没有工具来对此进行基准测试,但是将库的实际内容保存在本地表中会提高性能吗?哪怕是一点点?
我希望我清楚这一点,基本上我想知道的是:性能方面,第二种方法更好吗?
如果有人可以链接/详细解释如何在 Lua 中处理全局变量,这也可以解释这一点。