我有一个名为load_modbus
的模块。
这就是我的要求:
driver_modbus = require "lua_plugin/load_modbus";
在我需要之前,我有以下代码行:
-- Include Paths
package.path = package.path .. ";./usr/lua/?.lua;./usr/lua/lua_modules/?.lua";
package.cpath = package.cpath .. ";./lib/?.so;./usr/lib/?.so";
现在需要如何运作?
它是否需要我提供的路径(lua_plugin/load_modbus
)而不是?
?
我是否更正,它会搜索这些文件:
./usr/lua/lua_plugin/load_modbus.lua;
./usr/lua/lua_modules/lua_plugin/load_modbus.lua
./lib/lua_plugin/load_modbus.so;
./usr/lib/lua_plugin/load_modbus.so
如果有人能告诉我我是否正确,那将是件好事。仍然试着了解它是如何工作的。
答案 0 :(得分:2)
简短回答:是的。
要求不假设你给它一个路径,而是一个模板。这是因为lua可以在没有实际文件系统的系统上使用。如果你给它一个像“/include/?.lua”这样的字符串并要求“test”它会替换“?”使用您需要的字符串并尝试加载“/include/test.lua”。
您对搜索的路径大多是正确的,但请记住,如果您package.path = package.path .. <something>
只会附加到标准搜索路径,那么它不仅会搜索该路径,还会搜索所有其他路径太。如果仅想要搜索一条路径,则必须执行package.path = <your search path>
考虑阅读。你也可能感兴趣的是lua缓存了它require
调用的结果,以防你不知道它。