如何防止我的可调用Lua表将自己作为参数传递给__call



假设我有以下代码:

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`

相关内容

  • 没有找到相关文章

最新更新