lua和其他語言一樣,也有模組/包的概念,稍微有點不同的是,預設先從環境變數lua_path中搜尋lua檔案,如果搜尋不到,則從lua_cpath中搜尋c檔案。
對於我來說,時而去改變環境變數,則顯得麻煩,並且在另外的環境中部署時還要修改環境變數,則顯得不人性化,因此,覺得如下方式增加搜尋路徑比較好:
自定義包檔案及包載入示例,假如檔案結構如下:
藍色表示資料夾,紫色表示檔案
----------test.lua
----------demopackage
---------------------init.lua
---------------------a.lua
這時候,demopackage就是乙個包了, 模組demopackage的功能由init.lua檔案提供,模組demopackage.a由a.lua檔案提供,下面將在test.lua檔案中呼叫demopackage包:
--init.lua檔案
--a.lua
上面的兩個檔案中,開頭都有這麼一行**module(..., package.seeall),這是為了模組名以檔名命名,還有為了不汙染全域性變數_g,返回當前模組提供的函式等等。相當於:
--將模組名設定為檔名,且載入這個模組
local modname = ...
local m = {}
_g[modname] = m
package.loaded[modname] = m
--引入所需模組
local io = io
local print = print
setfenv(1, m) --> 設定當前環境變數
--開始實現模組功能
function test()
print("test")
end呼叫demo檔案
--test.lua
lua中,用require來載入包,如果想重新命名載入的包,可以如下操作:
local t = require "demopackage", 這時候,就可以用t呼叫demopackage中的功能了。
btw,lua載入包時,不會載入包中所有的模組,這點是跟其他語言不一樣的,這樣做應該是為了提高執行速度吧。
Lua學習筆記六 package
lua和其他語言一樣,也有模組 包的概念,稍微有點不同的是,預設先從環境變數lua path中搜尋lua檔案,如果搜尋不到,則從lua cpath中搜尋c檔案。對於我來說,時而去改變環境變數,則顯得麻煩,並且在另外的環境中部署時還要修改環境變數,則顯得不人性化,因此,覺得如下方式增加搜尋路徑比較好 ...
Lua學習筆記六 package
lua和其他語言一樣,也有模組 包的概念,稍微有點不同的是,預設先從環境變數lua path中搜尋lua檔案,如果搜尋不到,則從lua cpath中搜尋c檔案。對於我來說,時而去改變環境變數,則顯得麻煩,並且在另外的環境中部署時還要修改環境變數,則顯得不人性化,因此,覺得如下方式增加搜尋路徑比較好 ...
Lua學習筆記六 package
標籤 lua path n2module function語言 2009 05 09 15 15 23280人閱讀收藏 舉報 lua 11 lua和其他語言一樣,也有模組 包的概念,稍微有點不同的是,預設先從環境變數lua path中搜尋lua檔案,如果搜尋不到,則從lua cpath中搜尋c檔案。...