gpt4 book ai didi

Lua - 在元表中只调用一个运算符

转载 作者:行者123 更新时间:2023-12-02 06:35:42 24 4
gpt4 key购买 nike

我是 Lua 的新手,所以可能错过了一些教程,但问题是:

我有原始表和元表,其中包含我正在应用的几个运算符:

original = { 1, 2, 3 }

test = setmetatable(original, {
__add = function (lhs, rhs)
print('adds')
end,
__mul = function (lhs, rhs)
print('multiplies')
end
})

不幸的是,当我进行如下操作时:

test = test + 3
test = test * 3

我收到一个错误:

attempt to perform arithmetic on global 'test' (a table value)

没有找到关于这个问题的任何描述。我还注意到,如果元表是一个单独的变量并传递给 setmetatable 方法,那么它就可以工作..

最佳答案

test = test + 3

大致等同于:

test = getmetatable(test).__add(test, 3)

您正在将 __add 的返回值分配给 test

_add 不返回任何内容,因此在第一行之后,testnil。然后你再做一次:

test = getmetatable(test).__add(test, 3)

您无法索引或获取 nil 的元表。


一个很容易发现这个的东西,可能是我会尝试的第一件事:

test = test + 3
print(test)
test = test * 3

关于Lua - 在元表中只调用一个运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com