我想创建一个简单的模拟表,它会告诉我试图从中调用什么。
我的第一次尝试是:
local function capture(table, key)
print("call to " .. tostring(table) .. " with key " .. tostring(key))
return key
end
function getMock()
mock = {}
mt = { __index = capture }
setmetatable(mock, mt)
return mock
end
现在用
t = getMock()
t.foo
按我的预期打印:
call to table: 002BB188 with key foo
但试图打电话:
t.foo("bar")
给出:
call to table: 002BB188 with key foo
lua: test.lua:6: attempt to call field 'foo' (a string value)
现在我有两个问题:
- 如何避免异常,即。我究竟做错了什么?
- 如何也捕获方法参数(在这种情况下为“bar”)?