lua哪些运营商可以超载

时间:2017-03-13 10:41:15

标签: lua operators lua-table metatable

我知道有可能在表的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用于访问+运营商,你怎么能访问其他运营商?

1 个答案:

答案 0 :(得分:4)

  

其他运营商可以超载

Lua手册中描述了metamethods的完整列表: 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用于访问+运算符,您如何访问其他运算符?

参见手册。 Metamethods的描述告诉哪个操作员触发了精确的元方法。