Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 如何包装和要求工作?_Lua - Fatal编程技术网

Lua 如何包装和要求工作?

Lua 如何包装和要求工作?,lua,Lua,我有一个名为load\u 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

我有一个名为
load\u 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
如果有人能告诉我是否正确,那就太好了。还是试着去理解它是如何工作的。

简短的回答:是的

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

对于它将搜索的路径,您基本上是正确的,但是请记住,如果您执行
package.path=package.path
只会附加到标准搜索路径,因此它不仅会搜索该路径,还会搜索所有其他路径。如果只想搜索一条路径,则必须执行
package.path=

有关这方面的更多信息,请访问


考虑一下读这个。您可能还感兴趣的是,lua缓存了它的
require
调用的结果,以防您还不知道。

就这么做吧:
require“foo”
您将收到一条错误消息,其中包含Lua搜索模块的目录的完整列表。但我是否正确地认为
将替换为我提供的所需目录?(lua_插件/load_modbus)好的,这意味着我是正确的。Thanks@EgorSkriptunoff或者你也可以打印package.searchpath,它有相同的结果,但不太像黑客<代码>打印(包路径:gsub(“;”,“\n”)(gsub使其更易于阅读)