lua 哪些运算符可以被重载
lua which operators can be overloaded
我知道可以在 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 访问 + 运算符,您如何访问其他运算符?
which other operators can you overload
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
if __add is used to access the + operator, how can you access other operators?
查看手册。元方法的描述告诉了哪个运算符触发了那个确切的元方法。
我知道可以在 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 访问 + 运算符,您如何访问其他运算符?
which other operators can you overload
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
if __add is used to access the + operator, how can you access other operators?
查看手册。元方法的描述告诉了哪个运算符触发了那个确切的元方法。