如何在lua中制作自定义++、-=和+=运算符?

我该如何在lua中制作自定义 ++-=+= 运算符?由于它缺少增加/减少运算符。

我正在尝试,下面是我的代码:

local opTable = {}

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

opTable["++", int + 1] -- 其余的代码可以工作,这是主要的问题所在。

local x = 2;
print(x++)

我还想知道如何做 +=-=, 或者如何做 /=*=%=

原文链接 https://stackoverflow.com/questions/68911370

点赞
stackoverflow用户106104
stackoverflow用户106104

你无法在 Lua 中创建自定义运算符。这是不可能的。

你的 __call 元方法(如果它确实起作用的话)会允许你调用 x("++")(即允许你调用一个数字),而不是 x++,它将返回 x+1 而不修改 x。

opTable["++", int + 1] 不是 Lua 语句。你可能想要像这样做:

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

但它仍然不能实现你想要的效果。语法仍然是 x("++"),它将返回 x+1,而不会修改 x。

2021-08-24 17:07:21