lua 可以重载哪些运算符

我知道在 Lua 中可以用表格重载加法运算。例如:

foo = {
    value = 10
}
bar = {
    value = 15
}
mt = {
    __add = function(left,right)
        left.value = left.value + right.value;
        return left;
    end
}
setmetatable(foo,mt);

foo = foo + bar;
print(foo.value);

输出:25

那么,我现在的问题是,除了加法运算符外,还可以重载哪些运算符?如果使用 __add 访问加法运算符,还可以如何访问其他运算符?

点赞
用户5675002
用户5675002

有哪些运算符可以被重载?

Lua 手册中详细列出了所有的元方法: http://www.lua.org/manual/5.1/manual.html#2.8

http://www.lua.org/manual/5.2/manual.html#2.4

http://www.lua.org/manual/5.3/manual.html#2.4

如果使用 __add 访问 + 运算符,如何访问其他运算符?

请查阅手册。元方法的描述会告诉你哪个运算符会触发该元方法。

2017-03-13 10:53:30