第一版是針對 Lua 5.0 編寫的。雖然在很大程度上仍然適用於後續版本,但仍有一些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買書籍,您也可以協助 支援 Lua 專案。
![]() |
程式設計 in Lua | ![]() |
第 2 部分。表格和物件 第 15 章。套件 |
通常,當我們撰寫套件時,會將所有程式碼放入單一檔案中。然後,若要開啟或匯入套件(也就是讓套件可用),我們只要執行該檔案即可。例如,如果我們有一個檔案 complex.lua
,其中包含複數套件的定義,則指令 require "complex"
會開啟該套件。請記住,require
會避免多次載入同一個套件。
一個反覆出現的問題是檔案名稱和套件名稱之間的關係。當然,將它們關聯起來是一個好主意,因為 require
使用的是檔案,而不是套件。一個解決方案是將檔案命名為套件,並加上一些已知的副檔名。Lua 沒有固定任何副檔名;這取決於您的路徑。例如,如果您的路徑包含類似於 "/usr/local/lualibs/?.lua"
的組件,則套件 complex
可能存在於 complex.lua
檔案中。
有些人偏好反過來,動態地將套件命名為檔案名稱。也就是說,如果您重新命名檔案,套件也會重新命名。此解決方案提供了更大的彈性。例如,如果您取得兩個具有相同名稱的不同套件,您不必變更任何一個套件,只需重新命名一個檔案即可。若要在 Lua 中實作此命名配置,我們使用 _REQUIREDNAME
變數。請記住,當 require
載入檔案時,它會使用虛擬檔案名稱定義該變數。因此,您可以在套件中撰寫類似以下的內容
local P = {} -- package if _REQUIREDNAME == nil then complex = P else _G[_REQUIREDNAME] = P end測試允許我們在沒有
require
的情況下使用套件。如果未定義 _REQUIREDNAME
,我們會為套件使用一個固定的名稱(在範例中為 complex
)。否則,套件會使用虛擬檔案名稱註冊自身,無論名稱為何。如果使用者將函式庫放入 cpx.lua
檔案並執行 require"cpx"
,套件會將自身載入 cpx
表格中。如果另一位使用者將函式庫移至 cpx_v1.lua
檔案並執行 require"cpx_v1"
,套件會將自身載入 cpx_v1
表格中。
版權所有 © 2003–2004 Roberto Ierusalimschy。保留所有權利。 | ![]() |