在Lua中使用加法而不使用结果

在Lua中使用加法而不使用结果,lua,Lua,我试图在Lua5.3中运行以下内容 函数新建 局部自={} 可设置元(自{ __添加=功能(左、右) 打印('ok so',左侧,'+',右侧) 结束 }) 回归自我 结束 本地t1=新的 本地t2=新的 t1+t2 我在“+”附近听到一个错误,说语法错误。但是,如果我将最后一行更改为x=t1+t2,它将运行并打印,不会出错 是否可以在不使用结果值的情况下使用二进制运算符?为什么Lua不让我自己做t1+t2甚至1+2?Lua不允许这样做,因为所有的操作符(函数调用除外)都是用来计算结果的。没有

我试图在Lua5.3中运行以下内容

函数新建
局部自={}
可设置元(自{
__添加=功能(左、右)
打印('ok so',左侧,'+',右侧)
结束
})
回归自我
结束
本地t1=新的
本地t2=新的
t1+t2
我在“+”附近听到一个错误,说
语法错误。但是,如果我将最后一行更改为
x=t1+t2
,它将运行并打印,不会出错


是否可以在不使用结果值的情况下使用二进制运算符?为什么Lua不让我自己做
t1+t2
甚至
1+2

Lua不允许这样做,因为所有的操作符(函数调用除外)都是用来计算结果的。没有理由放弃表达式的结果,它通常表示编码错误

如果您只是想测试代码,我建议使用
assert

assert(not (t1 + t2))
我在这里使用
not
,因为您的
\uu add
函数不返回任何内容


编辑:通常,当我们添加两个数字时,我们希望得到一个新的数字,而不改变原始数字。Lua的元方法设计为以同样的方式工作。要做诸如打印或修改操作数之类的副作用,使用常规命名方法更容易、更清晰。

刚刚写完我的答案,我很好奇:你真的打算在
\uu add
中打印一些东西,还是那是某种临时测试的东西?@luther temporary testing!我想使用此加法操作作为修改lhs表的一种方便方法。例如,我想尝试
t1+t2
,而不是
t1:add(t2)
。我已经编辑了我的答案。你可以做
print(t1+t2)
或者
t1=t1+t2
local\uu=t1+t2
更好。