在Lua中,封裝函式通常意味著將一組相關的功能組織在一起,然後透過模組的形式提供給其他指令碼呼叫。Lua的模組可以是簡單的指令碼檔案,也可以是返回一個表的指令碼,表中包含了模組的所有公共函式和變數。
以下是建立和使用Lua模組的基本步驟:
1. 建立模組
建立一個Lua檔案,比如 mymodule.lua
,並在其中定義你的函式和變數。你可以將函式和變數放在一個表中返回,以便封裝它們:
-- mymodule.lua
local mymodule = {}
function mymodule.hello()
print("Hello from mymodule!")
end
function mymodule.world()
print("World from mymodule!")
end
return mymodule
2. 使用 require
載入模組
在其他指令碼中,你可以使用 require
函式來載入這個模組,並訪問模組中定義的函式和變數:
-- main.lua
local mymodule = require("mymodule")
-- 使用模組中的函式
mymodule.hello() -- 輸出: Hello from mymodule!
mymodule.world() -- 輸出: World from mymodule!
3. 模組路徑
當使用 require
載入模組時,Lua會在 package.path
定義的路徑中查詢模組檔案。確保你的模組檔案位於這些路徑之一,或者使用正確的相對路徑來引用它。
4. 模組化最佳實踐
- 模組化: 將相關的功能組織在同一個模組中。
- 封裝: 將不應該被外部訪問的函式和變數放在模組內部,不返回它們。
- 介面: 只透過模組的公共介面(返回的表中的函式和變數)與模組互動。
- 文件: 為模組提供文件,說明如何使用模組及其提供的介面。
5. 模組查詢順序
Lua查詢模組的順序如下:
- 查詢
package.loaded
表,看是否已經載入過該模組。 - 查詢
package.path
定義的路徑,嘗試載入模組。 - 如果找到模組檔案,載入並執行它。
- 如果執行成功,將模組表儲存在
package.loaded
中,以便將來的require
呼叫可以直接訪問。
透過遵循這些步驟和最佳實踐,你可以建立可重用和可維護的Lua模組,這些模組可以輕鬆地被其他指令碼呼叫。