Lua local require of modules in different files

我知道 require 只在第一次加载文件时读取(在 package.loaded 中)。但是,我看到了以下行为,并希望了解一些关于正在发生的事情的指针。

假设我有一个文件 lib/q.lua:

local q = {}

local function dep()
  return 1;
end

q.dep = dep;
return q;

另一个文件 lib/p.lua:

local q = require('./lib/q');
local p = {}
local function result()
  return q;
end
p.result = result;
return p;

另一个文件 main.lua:

local p = require('./lib/p');
local q = require('./lib/q');
local assert = require('luassert');

local result = p.result();
print(result);
print(package.loaded['./lib/q']);
print(q);
assert.is_equal(q, result);

package.loaded['./lib/q'] 的值与 result 相同。然而,它的值与 main.lua 中的 local q 不同。我希望它们是相同的。是否有关于这个的文档或者我漏掉了些什么。

对 Lua 还很陌生。任何帮助都将不胜感激。谢谢。

原文链接 https://stackoverflow.com/questions/71121014

点赞