Lua封裝函式模組並由其他模組呼叫

朱小勇發表於2024-05-30

在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查詢模組的順序如下:

  1. 查詢 package.loaded 表,看是否已經載入過該模組。
  2. 查詢 package.path 定義的路徑,嘗試載入模組。
  3. 如果找到模組檔案,載入並執行它。
  4. 如果執行成功,將模組表儲存在 package.loaded 中,以便將來的 require 呼叫可以直接訪問。

透過遵循這些步驟和最佳實踐,你可以建立可重用和可維護的Lua模組,這些模組可以輕鬆地被其他指令碼呼叫。

相關文章