Posted on 2010-06-20 12:57
S.l.e!ep.¢% 閱讀(2169)
評論(0) 編輯 收藏 引用 所屬分類:
Lua
Lua的require:require (modname)
用于加載指定的模塊。
此函數先檢測package.loaded表中是否存在modname,存在則直接返回當中的值,沒有則通過定義的加載器加載modname。
查找加載器順序:
??? (1)檢測package.preload表是否存在modname,有則加載
??? (2)通過Lua Loader加載,通過查找存放于package.path的路徑加載,有則加載
??? (3)通過C Loader加載,通過查找存放于package.cpath的路徑加載,有則加載
??? (4)通過all-in-one Loader加載:
??? 通過查找modname.dll并查找當中的luaopen_<XXXX>
??? 其中XXXX為載塊名-后的字符用_替換.后的字符:如:a.v1-b.c 當函數名為luaopen_b_c
??? 當require查找的不是一個Lua庫或C庫,它就會調用all-in-one loader,此加載器是用C路徑作為載塊的目錄,
??? 當查找到合適的加載器時,require就會加載其中的模塊,當加載器有返回值,將會存放于package.loaded[modname]表。最后返回package.loaded[modname]表
??? 當加載失敗時,require將觸發錯誤
package.cpath
功能:用于require C loader的搜索路徑,為模式串
可以通過修改LUA_CPATH變量(luaconf.h)修改此值
package.path
功能:用于require Lua loader的搜索路徑
同樣可以通過修改LUA_PATH變量(luaconf.h)修改此值