Lua 改變require函式做到非侵入式更改

2021-10-08 04:46:24 字數 977 閱讀 6878

遇到這麼個需求,做新版本但不可以改動以前版本的**。

這個時候就需要用非侵入式寫法。

記錄一下從乙個大佬那裡學到的一種非侵入式寫法。

下面這是舊版本**。

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...