翻譯自: How to Create a Lua Module編程
Lua編程語言
中的一個 模塊
(module
)是一個包含函數和變量的代碼片斷: 它是一個用戶庫. 它是把你的代碼切分爲多個文件的一種有力方法. 一個 模塊
用 Lua
關鍵字 require
來加載. 模塊
被編碼到一個以 .lua
做爲擴展名的文件中, 而且這個文件必須出如今 Lua
包搜索路徑(package.path
) 中.編程語言
一個 模塊
實際上就是一個帶有函數的 Lua
表(table
)(這裏有關於 Lua
的一個快速介紹). 這個表在 模塊
文件的最後被返回. 這裏有一個叫作 DemoLib.lua
的簡單的 Lua
的 模塊
的例子:函數
文件模塊: DemoLib.lua
ui
local demo_mod = {} -- The main table function demo_mod.Mult(a, b) return a * b end return demo_mod
如今在 Lua
的 main
代碼中, 咱們能夠加載這個 模塊
, 而且開始經過下面的代碼來使用它:編碼
-- Update the search path local module_folder = "/home/jegx/my_kool_mods/" package.path = module_folder .. "?.lua;" .. package.path -- Load the module demo = require "DemoLib" -- Use it! local result = demo.Mult(10, 2)
若是 模塊
不在 Lua
搜索路徑中, 你能夠用保存着 模塊
文件的路徑來更新 package.path
.lua
若是由於某些緣由你須要從新加載 模塊
(例如動態編程), 只要把 package.loaded["DemoLib"]
賦值 nil
就能夠了:翻譯
... package.loaded["DemoLib"] = nil demo = require "DemoLib" ...
我爲了給示例建立一個高級並且更簡單的接口開始在最近的例程 GLSL Hacker 中使用 Lua
的 模塊
. Lua
模塊
的第一次使用在這篇文章Exploring GLSL – Normal Visualizer with Geometry Shaders (Shader Library)的例程中.3d