亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua模塊與包學習筆記

2024-07-21 23:04:20
字體:
來源:轉載
供稿:網友

從 Lua 5.1 開始,Lua 加入了標準的模塊管理機制,可以把一些公用的代碼放在一個文件里,以API 接口的形式在其他地方調用,有利于代碼的重用和降低代碼耦合度。

創建模塊

其實 Lua 的模塊是由變量、函數等已知元素組成的 table,因此創建一個模塊很簡單,就是創建一個 table,然后把需要導出的常量、函數放入其中,最后返回這個 table 就行。格式如下:

 

復制代碼 代碼如下:

-- 定義一個名為 module 的模塊
module = {}
 
-- 定義一個常量
module.constant = "this is a constant"
 
-- 定義一個函數
function module.func1()
    io.write("this is a public function!/n")
end
 
local function func2()
    print("this is a private function!")
end
 
function module.func3()
    func2()
end
 
return module

 

由上可知,模塊的結構就是一個 table 的結構,因此可以像操作調用 table 里的元素那樣來操作調用模塊里的常量或函數。不過上面的 func2 聲明為程序塊的局部變量,即表示一個私有函數,因此是不能從外部訪問模塊里的這個私有函數,必須通過模塊里的共有函數來調用。

最后,把上面的模塊代碼保存為跟模塊名一樣的 lua 文件里(例如上面是 module.lua),那么一個自定義的模塊就創建成功。

加載模塊

Lua 提供一個名為 require 的函數來加載模塊,使用也很簡單,它只有一個參數,這個參數就是要指定加載的模塊名,例如:

 

復制代碼 代碼如下:

require("<模塊名>")
-- 或者是
-- require "<模塊名>"

 

然后會返回一個由模塊常量或函數組成的 table,并且還會定義一個包含該 table 的全局變量。

或者給加載的模塊定義一個別名變量,方便調用:

 

復制代碼 代碼如下:

local m = require("module")
 
print(m.constant)
 
m.func3()

 

加載機制

對于自定義的模塊,模塊文件不是放在哪個文件目錄都行,函數 require 有它自己的文件路徑加載策略,它會嘗試從 Lua 文件或 C 程序庫中加載模塊。

require 用于搜索 Lua 文件的路徑是存放在全局變量 package.path 中,當 Lua 啟動后,會以環境變量 LUA_PATH 的值來初始這個環境變量。如果沒有找到該環境變量,則使用一個編譯時定義的默認路徑來初始化。

當然,如果沒有 LUA_PATH 這個環境變量,也可以自定義設置,在當前用戶根目錄下打開 .profile 文件(沒有則創建,打開 .bashrc 文件也可以),例如把 "~/lua/" 路徑加入 LUA_PATH 環境變量里:

 

復制代碼 代碼如下:

#LUA_PATH
export LUA_PATH="~/lua/?.lua;;"

 

文件路徑以 ";" 號分隔,最后的 2 個 ";;" 表示新加的路徑后面加上原來的默認路徑。

接著,更新環境變量參數,使之立即生效:

 

復制代碼 代碼如下:

source ~/.profile

 

這時假設 package.path 的值是:

 

復制代碼 代碼如下:

/Users/dengjoe/lua/?.lua;./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua

 

那么調用 require("module") 時就會嘗試打開以下文件目錄去搜索目標

 

復制代碼 代碼如下:

/Users/dengjoe/lua/module.lua;
./module.lua
/usr/local/share/lua/5.1/module.lua
/usr/local/share/lua/5.1/module/init.lua
/usr/local/lib/lua/5.1/module.lua
/usr/local/lib/lua/5.1/module/init.lua

 

如果找過目標文件,則會調用 package.loadfile 來加載模塊。否則,就會去找 C 程序庫。搜索的文件路徑是從全局變量 package.cpath 獲取,而這個變量則是通過環境變量 LUA_CPATH 來初始。搜索的策略跟上面的一樣,只不過現在換成搜索的是 so 或 dll 類型的文件。如果找得到,那么 require 就會通過 package.loadlib 來加載它。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产网站欧美日韩免费精品在线观看| 国产乱肥老妇国产一区二| 欧美中文字幕在线视频| 色阁综合伊人av| 欧美成人黄色小视频| 国产精品96久久久久久| 色yeye香蕉凹凸一区二区av| 亚洲丝袜在线视频| 国产精品扒开腿做爽爽爽视频| 懂色av中文一区二区三区天美| 成人看片人aa| 亚洲理论片在线观看| 国产精品入口日韩视频大尺度| 青草青草久热精品视频在线网站| 成人做爽爽免费视频| 亚洲国产欧美在线成人app| 性欧美xxxx交| 亚洲天堂日韩电影| 国产精品极品美女在线观看免费| 欧美精品一区二区免费| 欧美乱妇40p| 亚洲欧美在线一区二区| 日韩视频免费在线| 日韩精品在线免费观看| 日韩福利伦理影院免费| 91精品在线观| 亚洲欧美日韩精品久久亚洲区| 欧美在线精品免播放器视频| 亚洲人成网站在线播| 性视频1819p久久| 中文字幕久热精品在线视频| 欧美激情亚洲精品| 国产亚洲精品一区二区| 欧美www视频在线观看| 成人精品一区二区三区| 国内精品久久久久久久| 亚洲精品国产精品国自产观看浪潮| 亚洲综合一区二区不卡| 色综合天天狠天天透天天伊人| 91精品在线影院| 午夜精品国产精品大乳美女| 亚洲视频日韩精品| 一夜七次郎国产精品亚洲| 亚洲影院在线看| 亚洲肉体裸体xxxx137| 91成人在线视频| 亚洲最大的av网站| 色七七影院综合| 九九热这里只有在线精品视| 亚洲第一色中文字幕| 成人午夜两性视频| 欧美激情第1页| 成人激情电影一区二区| 欧美一区二粉嫩精品国产一线天| 亚洲第一男人天堂| 91精品视频观看| 久久99精品国产99久久6尤物| 精品露脸国产偷人在视频| 久久综合免费视频| 欧美精品成人91久久久久久久| xxav国产精品美女主播| 亚洲欧洲日本专区| 亚洲男人av电影| 欧美福利视频网站| 久久艹在线视频| 国产精品免费视频久久久| 在线电影av不卡网址| 一区二区三区四区在线观看视频| 国产91九色视频| 欧美午夜精品久久久久久人妖| 久久精品视频播放| 九九精品视频在线观看| 日韩av在线免费播放| 久久久久久久网站| 欧美人与性动交a欧美精品| 欧美日韩中文字幕在线视频| 色久欧美在线视频观看| 中文字幕9999| 日韩精品中文字幕有码专区| 91国语精品自产拍在线观看性色| 久久久久久亚洲精品中文字幕| 欧美黑人巨大xxx极品| 欧美成人一区在线| 欧美精品videosex牲欧美| 日韩精品亚洲元码| 日韩国产欧美精品一区二区三区| 国产精品678| 久久久噜噜噜久噜久久| 一本色道久久综合狠狠躁篇的优点| 法国裸体一区二区| 日韩欧美在线视频日韩欧美在线视频| 久久精品国产亚洲精品| 国自产精品手机在线观看视频| 秋霞av国产精品一区| 97久久久免费福利网址| 久久亚洲影音av资源网| 黑人与娇小精品av专区| 国产精品影院在线观看| 国产精品日日摸夜夜添夜夜av| 日韩欧美国产视频| 国产成人高潮免费观看精品| 欧美午夜激情视频| 在线成人免费网站| 国产剧情久久久久久| 2019日本中文字幕| 欧美裸体男粗大视频在线观看| 国产丝袜视频一区| 人人爽久久涩噜噜噜网站| 久久精品国产精品亚洲| 91精品国产自产在线老师啪| 色综合天天综合网国产成人网| 国产精品精品一区二区三区午夜版| 色偷偷偷综合中文字幕;dd| 欧美日韩午夜视频在线观看| 97色在线观看免费视频| 不卡伊人av在线播放| 日韩欧美在线观看| 中文字幕精品影院| 精品久久久久久中文字幕大豆网| 黄色成人av网| 日韩国产精品亚洲а∨天堂免| 国产精品综合网站| 成人网页在线免费观看| 亚洲人成人99网站| 欧美久久精品一级黑人c片| 国产亚洲欧洲高清一区| 久久久久这里只有精品| 在线免费观看羞羞视频一区二区| 在线观看国产成人av片| 国产欧美一区二区三区在线| 欧美性xxxx极品高清hd直播| 欧美日韩美女在线观看| 欧美特级www| 欧美区在线播放| 中文字幕在线视频日韩| 中文字幕日本精品| 91国产在线精品| 亚洲自拍偷拍网址| 国产精品第8页| 97av在线视频| 欧美日韩另类字幕中文| 欧美乱妇高清无乱码| 亚洲国产美女久久久久| 久久精视频免费在线久久完整在线看| 国产午夜精品视频免费不卡69堂| 中文字幕在线成人| 欧美激情中文字幕在线| 欧美性高潮在线| 欧美激情精品久久久久久免费印度| 亚洲精品久久在线| 欧美激情精品久久久久久久变态| 欧美精品福利在线| 欧美精品福利视频| 欧美性猛交丰臀xxxxx网站| 久久久久久久久久久免费| 日韩欧美亚洲范冰冰与中字| 亚洲成年人在线播放| 国产精品99久久久久久久久久久久| 国产亚洲精品综合一区91| 啊v视频在线一区二区三区| 欧美人与性动交| 亚洲欧美在线磁力| 成人免费激情视频| 久久久国产精品一区|