Lua學習筆記六 package

2021-04-27 19:40:46 字數 1121 閱讀 8700

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檔案。...