1.require
1.查找顺序
- 1.先去 package.loaded 表查找,如果有直接返回 package.loaded[‘xxx’] 对应的 value
- 2.在 package.preload 查找’xxx’, 如果 preload 存在,那么就把它作为 loader,调用loader(L)
- 3.在 package.path 路径下查找,可以打印 package.path ,查找过程 ‘?’ 用 ‘xxx’ 替换
'/usr/local/share/lua/5.2/?.lua;/usr/local/share/lua/5.2/?/init.lua;/usr/local/lib/lua/5.2/?.lua;/usr/local/lib/lua/5.2/?/init.lua;./?.lua'
a.'/usr/local/share/lua/5.2/xxx.lua'
b.'/usr/local/share/lua/5.2/xxx/init.lua'
c. ... 按照顺序替换查找直到找到位置
- 4.package.cpath 查找c库
- 5.都没有找打报错
2.例子
例子文件
./main.lua、./test1.lua、./test2.lua、./test3.lua、./test4.lua
main.lua
require 'test1.lua'
require 'test2.lua'
require 'test3.lua'
require 'test4.lua'
print(package.loaded['test1']) -- 打印 true
print(package.loaded['test2']) -- 打印 'test2'
print(package.loaded['test3']) -- 打印 333
print(package.loaded['test4']) -- 打印 444
test1.lua 没有返回值
print(' test1 调用')
test2.lua 没有返回值
print(' test2 调用')
package.loaded['test2'] = 'test2'
test3.lua 有返回值
print(' test3 调用')
return 333
test4.lua 有返回值
print(' test4 调用')
package.loaded['test4'] = 'test4'
return 444