【问题标题】:lua which operators can be overloadedlua 哪些操作符可以重载
【发布时间】:2017-08-03 08:23:03
【问题描述】:

我知道在 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 访问 + 运算符,你如何访问其他运算符?

【问题讨论】:

    标签: lua operators lua-table metatable


    【解决方案1】:

    您可以重载哪些其他运算符

    元方法的完整列表在 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 来访问 + 运算符,如何访问其他运算符?

    参见手册。元方法的描述告诉了哪个运算符触发了确切的元方法。

    【讨论】:

    • 那些由 Lua 内部事件触发的,或与内部结构管理有关的。 Lua 语言中没有可以直接触发这些元方法的显式运算符。
    猜你喜欢
    • 2023-01-12
    • 2022-11-04
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多