在Lua中使用Metamethods:使用_add时出错

时间:2016-08-23 21:14:50

标签: lua

我正在研究管理2D矢量的方法,到目前为止它还是相当不错的。我有一个模块文件,我正在调用Positions.lua,其中包含Vector2.new(X,Y)的信息

我以前从未真正使用过Metamethods,所以这是一次学习经历。我想轻松地将两个Vector2放在一起。这是我的Metamethod功能:

local vectorMethods = {
    _add = function(lhs,rhs)
        return Positions.Vector2.new(lhs.x+rhs.x,lhs.y+rhs.y);
    end
};

我已经创建了这个阅读关于metamethods的Lua-users wiki页面。基于我所看到的,如果我使用setmetamethod将我的Vector2表链接到元方法,这应该可行。

Positions = require("Positions");
X = Positions.Vector2.new(154.1,353.3);
Y = Positions.Vector2.new(5,5);
s,m = pcall(function() J = X+Y end);
if not s then
    print("Failed due to error: "..m);
end

这是我收到的输出:

  

由于错误而失败:main.lua:12:尝试执行算术运算   全局'X'(表值)

关于我可能做错的任何想法?我很抱歉没有显示整个代码,我觉得发帖太多了。

对不起,这篇文章组织得很糟糕。我不会在论坛上发帖很多。

感谢您提供给我的任何帮助!

1 个答案:

答案 0 :(得分:2)

事实证明问题来自于我在_add中使用单个_而不是使用__add。

有时我很傻。 感谢阅读,至少!