我在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")
我真的沒有工具的基準此權利,但將在所有維持圖書館的實際內容在本地表提高性能?即使是最輕微的?
我希望我在這方面明確mysef,基本上我想知道的是:Performance-wise是第二種方法更好?
如果有人可以鏈接/詳細解釋如何在Lua中處理全局變量,這可以解釋這一點,那也很好。
感謝這個有用的信息,但在側面說明,我知道我可以提供一個表__index,但你會在哪裏得到的鑰匙? 此外,我可能只是用簡單的代碼去看看你展示的所有麻煩。 – TheJjokerR 2013-02-15 09:20:02
等待不要忘記,你從側面註釋中刪除[鍵]部分,它會按預期工作。沒有看到。 – TheJjokerR 2013-02-15 09:44:42
對,對不起。錯字。 – Mud 2013-02-15 17:37:41