假设我有以下代码:
local t = {};
setmetatable(t, {__call=print});
t(3, 5, 7)
代替打印:
3 5 7
它打印:
table: 0x9357020 3 5 7
该表的id是t
的id。
如何使它表现得像我直接调用了print
?
你不能;由CCD_ 3指定的函数总是传递被调用的项。
不过,您可以创建一个包装函数,该函数只丢弃第一个参数,并仅使用第一个参数之后的参数调用您最初想要调用的函数,然后将该包装函数设置为__call
值。
你不能,但你可以使用以下代码:
局部t={};setmetatable(t,{__call=函数(t,…(print(…(}(;t(3,5,7(
打印3、5、7`