Lua基礎 十三 模組和包

2021-10-14 14:39:07 字數 2955 閱讀 3498

一    模組的介紹

模組類似於'乙個封裝庫',從lua 5.1 開始,lua加入了'標準的模組管理機制',可以把一些'公用的**'放在乙個'檔案'裡,以'api介面的形式'在其他地方呼叫,利於'**的重用'和'降低**的耦合度'

所有的'標準庫'都是模組

備註: 提前載入的'所有標準庫'--> math、string、...

定義模組建立模組的四種方式

(1)基本定義

lua的模組是由'變數'、'函式'等已知元素'組成的table',因此建立1個模組就是建立1個table,把'需要匯出'的常量、函式放入其中,最後'返回這個table'

備註: 常量盡量'全字母大寫'

-- 1)建立乙個表

mod = {}

-- 定義乙個常量

mod.constant="constant"

-- 2)將所有需要'匯出的函式'返回其中

function mod.fun1()

io.write("這是乙個公有函式,外部可以呼叫!")

end-- 3)定義乙個"本地函式"-->只能在'模組內'呼叫-->"隱藏細節"

local function private_func()

print('只能mod內呼叫,這是乙個私有函式')

end-- 4)呼叫"本地函式"

function mod.all()

private_func()

print('呼叫本地函式')

end-- 5)返回這個表

(2)冒號和點號的定義

++++++++++++++++'模組中函式定義的方式'++++++++++++++++

'點號': 函式內部'不能用self'來表示自己

'冒號': 函式內部'可以用self'來表示自己

三    使用模組

(1)idea中使用模組

idea lua報錯 module 'module' not found

四    require載入機制

(1)require載入機制

(2)搜尋路徑

++++++++++++'lua_path'和'lua_path_5_3'++++++++++++  

說明:搜尋'lua檔案'的路徑

package.path = '/usr/local/lib/lua/5.1/?.lua;/usr/local/share/lua/5.1/?.lua;./?.lua;' --搜尋'lua模組'

說明:'先'查詢'lua_path_5_3'環境變數,如果沒有被定義,lua語言'再嘗試'另乙個環境變數'lua_path'

++++++++++++'lua_cpath'和'lua_cpath_5_3'++++++++++++

說明:搜尋'c標準庫'的路徑

package.cpath = '/usr/local/lib/lua/5.1/?.so;/usr/local/share/lua/5.1/?.lua;./?.so' --搜尋'so模組'

核心:乙個是在'當前路徑'搜尋、乙個是lua

實踐:該函式使用'模組名'來替換'問號?'得到'最終的檔名'

'?'用來'替換模組名',而';'用來分割各個'搜尋路徑'

五    子模組和包

lua支援具有'層次結構'的模組名,通過'點-->(.)來分割'名稱中的層次

mod.sub的模組是'模組mod'的乙個'子模組'(submodule)

包(package):是一棵由'模組組成的完整的樹',是lua語言中用於'發行程式的單位'

++++++++++++++'轉換規則'++++++++++++++

搜尋乙個定義子模組的檔案:函式'require'會將'點'轉換成另乙個'字元'

posix作業系統:轉換成斜槓-->'/'

windows作業系統:轉換成反斜槓-->'\'

Lua程式設計 模組和包

模組與包 允許不同人共享 require載入返回乙個表 local m require math print m.sin 3.14 require函式 載入指定模組 括號可省略 載入過程 先檢查在表package.loaded是否被載入 如果已經載入不會重複載入 使用package.loadlib載...

Lua 模組與包

模組類似於乙個封裝庫,從 lua 5.1 開始,lua 加入了標準的模組管理機制,可以把一些公用的 放在乙個檔案裡,以 api 介面的形式在其他地方呼叫,有利於 的重用和降低 耦合度。lua 的模組是由變數 函式等已知元素組成的 table,因此建立乙個模組很簡單,就是建立乙個 table,然後把需...

Lua 模組與包

模組類似於乙個封裝庫,從lua 5.1開始,lua加入了標準的模組管理機制,可以把一些公用的 放在乙個檔案裡,以api介面的形式在其他地方呼叫,有利於 的重用和降低 耦合度。lua的模組是由變數 函式等已知元素組成的table,因此建立乙個模組很簡單,就是建立乙個table,然後把需要匯出的常量 函...