在 Lua 中的模块继承方面需要您的帮助。
假设我有 2 个模块:
第一个是“父”它定义了一个名为“端口”的字段和方法“连接”,它使用端口和域字段连接到某些服务。我想在子模块中定义第二个字段(域),而不是在父模块中。或者至少通过子模块覆盖这个字段。
module('Parent', package.seeall)
port = 1234
function connect()
ngx.say("connecting to "..domain..":"..port.."\n")
end
请注意,此处未定义“域”变量!
现在让我们看看第二个,它是“孩子”:
local base = _G
module('Child', package.seeall)
local Parent = base.require('Parent')
base.setmetatable(Child, { __index = Parent })
domain = '127.0.0.1'
这里是创建子实例的主要 lua 代码:
local Child = require "Child"
Child.connect()
问题是子模块中定义的变量对于父模块中定义的方法是不可见的。我需要更改此行为以让父例程代码看到子模块中定义的变量。这可能吗?我可以以某种方式将Child的命名空间复制到 Parent 模块吗?