这是想要的效果:
-- in module: A
module(...)
require('B')
new_func('my_val') -- new_func is defined in "B"
-- in module: B
module(...)
getfenv(2).new_func = function () end -- this does not work
-- this does
getfenv(2).A.new_func = function () end
这更多的是出于好奇而不是出于实际需要。我希望getfenv
通过这个深奥的问题了解更多。
既然getfenv(2)
应该返回一个环境,为什么getfenv(2).new_func
在上面的例子中不起作用?
我也不明白为什么getfenv(1) from A ~= getfenv(2) in B
。
(我也想避免使用debug
,包括debug.setupvalue)