Lua でのモジュールの継承について助けが必要です。
2 つのモジュールがあるとします。
最初のものは「親」です。「ポート」と呼ばれる1つのフィールドと、ポートとドメインフィールドを使用してサービスに接続するメソッド「接続」を定義します。親モジュールではなく、子モジュールで 2 番目のフィールド (ドメイン) を定義したい。または、少なくともこのフィールドを子モジュールでオーバーライドします。
module('Parent', package.seeall)
port = 1234
function connect()
ngx.say("connecting to "..domain..":"..port.."\n")
end
" domain " 変数はここでは定義されていないことに注意してください!
では、2 番目のものを見てみましょう。それは「子」です。
local base = _G
module('Child', package.seeall)
local Parent = base.require('Parent')
base.setmetatable(Child, { __index = Parent })
domain = '127.0.0.1'
そして、Child インスタンスを作成するメインの lua コードを次に示します。
local Child = require "Child"
Child.connect()
問題は、子モジュールで定義された変数が、親モジュールで定義されたメソッドに対して不可視であることです.親ルーチンコードが子モジュールで定義された変数を参照できるように、この動作を変更する必要があります..それは可能ですか? どういうわけかChildの名前空間を Parent モジュールにコピーできますか?