国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua模塊與包學習筆記

Lua模塊與包學習筆記

2020-04-18 11:15腳本之家 Lua

這篇文章主要介紹了Lua模塊與包學習筆記,本文講解了加載模塊、加載機制等內(nèi)容,需要的朋友可以參考下

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

創(chuàng)建模塊

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

 

復制代碼 代碼如下:

-- 定義一個名為 module 的模塊
module = {}
 
-- 定義一個常量
module.constant = "this is a constant"
 
-- 定義一個函數(shù)
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

 

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

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

加載模塊

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

 

復制代碼 代碼如下:

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

 

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

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

 

復制代碼 代碼如下:

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

 

加載機制

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

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

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

 

復制代碼 代碼如下:

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

 

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

接著,更新環(huán)境變量參數(shù),使之立即生效:

 

復制代碼 代碼如下:

source ~/.profile

 

這時假設(shè) 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

 

那么調(diào)用 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

 

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

延伸 · 閱讀

精彩推薦
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua教程(二):基礎(chǔ)知識、類型與值介紹

    Lua教程(二):基礎(chǔ)知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua中計算、執(zhí)行字符串中Lua代碼的方法

    Lua中計算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
主站蜘蛛池模板: 日韩在线一区二区三区 | 久久av网 | 国产精品久久久久久久福利院 | 亚洲视频一区二区三区在线观看 | 亚洲国产高清高潮精品美女 | 成人免费大片黄在线播放 | 最新国产在线 | av一区二区三区四区 | 黄色三级免费网站 | 国产女无套免费网站 | 在线观看国产精品一区 | 亚洲激情中文字幕 | 亚洲精品日韩激情在线电影 | 蜜桃视频成人在线观看 | a级在线免费| 欧美日韩专区 | 欧美成人精品高清视频在线观看 | 成人免费视频观看视频 | 日韩精品一区二区在线观看 | 精品久久久久久久久福利 | 麻豆美女 | 国产福利一区二区 | 国产成人精品一区二区在线 | 欧美在线观看视频一区二区 | 九九热在线免费视频 | 精品欧美一区二区三区久久久 | 亚洲国产成人精品久久 | 国产精品美女久久久久aⅴ国产馆 | 亚洲精品国产精品国自产在线 | 成人日韩| 北条麻妃99精品青青久久 | 国产免费一区二区 | 亚洲不卡 | 亚洲欧美精选 | av中文字幕在线观看 | 日韩免费视频一区二区 | 国产欧美一区二区精品性色 | 国产精品久久久久一区二区三区 | 欧美九九九 | 色视频www在线播放国产人成 | 国产狂做受xxxxx高潮 |