Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有以下代码:
local t = {}; setmetatable(t, {__call=print}); t(3, 5, 7)
而不是打印:
3 5 7
它打印:
table: 0x9357020 3 5 7
表的 id 是 的t。
t
我怎样才能让它表现得好像我print直接打电话一样?
print
你不能;由 always 指定的函数__call会传递被调用的项目。
__call
但是,您可以做的是创建一个包装函数,该函数仅丢弃第一个参数,并仅使用第一个参数之后的参数调用您最初想要调用的函数,并将该包装函数设置为__call值。
你不能,但你可以使用这个代码:
本地 t = {}; setmetatable(t, {__call=function(t,...)print(...)}); t(3, 5, 7)
打印 3 ,5, 7 `