在 JavaScript 中,你可以创建一个可调用的对象,如下所示:
const prox = new Proxy(function() {}, {
get(target, key) { return true }
apply(target, that, argList) { console.log('This came from a proxy') }
})
prox() // This came from a proxy
console.log(prox.name) // true
对于我正在处理的函数,我希望有类似的东西,并且有一个可以调用的方法。
local function describe()
-- ...
end
function describe.skip()
-- ...
end
这不起作用,因为函数不是表。
理想情况下这是可能的:
local describe = {}
function describe.__apply()
-- ...
end
function describe.skip()
-- ...
end
describe()
describe.skip()
函数的行为可能不像表,但表可以通过元方法表现得像函数。
__call
每当关联表被调用时,就会调用元方法
__call
,就像它是一个函数一样。例如:此外,
__index
可__newindex
用于创建完整的代理。另请参阅PIL 13.4.4 – 跟踪表访问,其中讨论了代理表。