包装和要求如何工作?

时间:2016-10-13 09:58:23

标签: lua

我有一个名为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

如果有人能告诉我我是否正确,那将是件好事。仍然试着了解它是如何工作的。

1 个答案:

答案 0 :(得分:2)

简短回答:是的。

要求不假设你给它一个路径,而是一个模板。这是因为lua可以在没有实际文件系统的系统上使用。如果你给它一个像“/include/?.lua”这样的字符串并要求“test”它会替换“?”使用您需要的字符串并尝试加载“/include/test.lua”。

您对搜索的路径大多是正确的,但请记住,如果您package.path = package.path .. <something>只会附加到标准搜索路径,那么它不仅会搜索该路径,还会搜索所有其他路径太。如果想要搜索一条路径,则必须执行package.path = <your search path>

http://lua.org/manual/5.3

上有更多相关信息

考虑阅读。你也可能感兴趣的是lua缓存了它require调用的结果,以防你不知道它。