我知道有可能在表的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用于访问+运营商,你怎么能访问其他运营商?
答案 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的描述告诉哪个操作员触发了精确的元方法。