如何建立一個 Lua 模塊

如何建立一個 Lua 模塊

翻譯自: How to Create a Lua Module編程

  • 譯者: FreeBlues

正文

Lua編程語言 中的一個 模塊(module)是一個包含函數和變量的代碼片斷: 它是一個用戶庫. 它是把你的代碼切分爲多個文件的一種有力方法. 一個 模塊Lua 關鍵字 require 來加載. 模塊 被編碼到一個以 .lua 做爲擴展名的文件中, 而且這個文件必須出如今 Lua 包搜索路徑(package.path) 中.編程語言

一個 模塊 實際上就是一個帶有函數的 Lua 表(table)(這裏有關於 Lua 的一個快速介紹). 這個表在 模塊 文件的最後被返回. 這裏有一個叫作 DemoLib.lua 的簡單的 Lua模塊 的例子:函數

文件模塊: DemoLib.luaui

local demo_mod = {} -- The main table
 
function demo_mod.Mult(a, b)
  return a * b
end
 
return demo_mod

如今在 Luamain 代碼中, 咱們能夠加載這個 模塊, 而且開始經過下面的代碼來使用它:編碼

-- 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

參考

Programming in Lua, 2nd edition, chapter 15code

相關文章
相關標籤/搜索