首页 > 解决方案 > 如何在lua中制作自定义++、-=、+=运算符?

问题描述

如何在 lua 中自定义++, -=,运算符?+=因为它缺少递增/递减运算符。

我正在尝试,这是我的代码:

local opTable = {}

debug.setmetatable(0, {
    __call = function(a, op)
        return opTable[op](a)
    end
})

opTable["++", int + 1] -- The rest of the code works, this is the main line that's the problem.

local x = 2;
print(x++)

我也想知道怎么做+=-=,或者可能怎么做/=*=%=

标签: luaoperators

解决方案


您不能在 Lua 中创建自定义运算符。这不可能。

您的__call元方法(如果它确实有效)将允许您调用x("++")(即它允许您调用一个数字),而不是x++,它将返回 x+1 而无需修改 x。

opTable["++", int + 1]作为 Lua 语句没有任何意义。你可能想要这样的东西:

opTable["++"] = function(int)
    return int + 1
end

但它仍然不会做你想做的事。语法仍然是x("++"),它会返回 x+1 并且不会修改 x。


推荐阅读