遇到這麼個需求,做新版本但不可以改動以前版本的**。
這個時候就需要用非侵入式寫法。
記錄一下從乙個大佬那裡學到的一種非侵入式寫法。
下面這是舊版本**。
gamepanel = class("gamepanel");
local m = gamepanel;
function m:openpanel()
print("openpanel");
endreturn m;
下面是更改require函式**。
local changetable = {};
changetable[gamepanel] = "newgamepanel";
org_require = require;
org_require = function(oldclass, useold)
if useold then
return require(oldclass);
endif changetable and changetable[oldclass] then
return require(changetable[oldclass]);
else
return require(oldclass);
endendrequire = org_require;
接下來新**這麼寫,就可以不用改舊**從而應用新邏輯。
之前require就**的地方均不作修改。
local m = require("gamepanel", true);
function m:openpanel()
print("openpanel");
endfunction m:newopenpanel()
print("newopenpanel");
endreturn m;
lua中的require函式
lua提供高階的require函式來載入執行庫,lua中的require函式功能主要有 1 require函式會搜尋目錄載入檔案 2 require會判斷是否檔案已經載入避免重複載入同一檔案。由於上述特徵,require在lua中是載入庫的更好的函式。require使用的路徑和普通我們看到的路徑還有...
LUA教程require函式 30
lua提供高階的require函式來載入執行庫。粗略的說require和dofile完成同樣的功能但有兩點不同 1.require會搜尋目錄載入檔案 2.require會判斷是否檔案已經載入避免重複載入同一檔案。由於上述特徵,require在lua中是載入庫的更好的函式。require使用的路徑和普...
lua 指定require路徑
在自己的lua檔案中,如果使用到了自己寫的c庫或者第三方庫,想讓lua編譯到自己指定的目錄下尋找.lua或。so檔案的時候,可以再自己的lua 中新增如下 可以指定require搜尋的路徑。package.path usr local share lua 5.1 lua home resty lua...