这个例子
debug.setmetatable(0,
{
__bnot = function(a) -- ~ operator
print("yay ".. a)
return a
end
})
print(~ (0))
print(~ (0.3))
print(~ (1))
print(~ (2))
print(~ (2.1))
输出如下
-1
yay 0.3
0.3
-2
-3
yay 2.1
2.1
我很期待
yay 0
0
yay 0.3
0.3
yay 1
1
yay 2
2
yay 2.1
2.1
看起来它不是为整数值调用的。
如何覆盖所有数字的 not 运算符?
最佳答案
根据评论:您不能用元方法覆盖所有内容。元方法是 Lua 中的回退。您只能实现未在 Lua 语言中定义的操作。例如,未定义对具有非零小数部分的数字的按位运算。
关于Lua 5.3 使用 debug.setmetatable 覆盖整数值的 ~ (__bnot) 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63729415/