gpt4 book ai didi

Lua 决定使用重载的 _add 或 _sub

转载 作者:行者123 更新时间:2023-12-02 07:05:02 25 4
gpt4 key购买 nike

我创建了一个元表,其中 __add 和 __sub 使用一个表和一个数字。 Lua 如何确定使用哪一个?考虑以下两种情况,表 T(描述了元表)

local n=-10
local V=T+n

local n=-10
local V=T-n

哪个被调用?

我已经尝试过各种组合,但没有看到规律。

最佳答案

Created a metatable where __add and __sub take a table and an number.

__add 和 __sub 采用两个操作数。其中之一必然是具有您的元表的表或用户数据,另一个可以是任何东西。 Lua 不关心另一个操作数的类型。

如果任一操作数具有一个元表,其中包含特定运算符的处理程序 (+ -> __add, - => __sub ),将调用该处理程序。

在你的例子中,Lua 不仅不关心 n 是正数还是负数,它也不关心它是不是一个数字。 -n 中的 -__sub 元方法无关——那是 unary 减号运算符,而__sub 处理二进制 减号运算符。

How does Lua determine which to use?

+ 运算符是一个“__add”事件。当你说 op1 + op2 时,Lua 检查 op1 是否有一个带有 __add 处理程序的元表。如果它找到一个,它就会调用它。否则它会检查 op2

关于Lua 决定使用重载的 _add 或 _sub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871508/

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