Lua复数类算术

我有一些使用标准二进制运算符==,>,<,-,+,*等实现的lua代码。我想通过一个lua对象添加一些功能,比如虚数(不仅仅是虚数,但是考虑虚数的答案仍然是我在寻找的)。我希望代码中的原始运算符能够正常使用,而不必替换每个运算符的实例,像mult(x,y)函数一样考虑数字为虚数的情况。在Python中,可以使用

__add__,__mul__等。

(如果不熟悉,请参阅此处)。我正在寻找一种在lua中的类结构,以实现这个功能。

点赞
用户7900162
用户7900162

你可以在这里阅读理论:元表

这里是一个复数实现的例子 。我可以从那个例子粘贴一些代码

-- complex.add( cx1, cx2 )
-- 将两个数相加;cx1 + cx2
function complex.add( cx1,cx2 )
   return setmetatable( { cx1[1]+cx2[1], cx1[2]+cx2[2] }, complex_meta )
end

-- complex.sub( cx1, cx2 )
-- 两个数相减;cx1 - cx2
function complex.sub( cx1,cx2 )
   return setmetatable( { cx1[1]-cx2[1], cx1[2]-cx2[2] }, complex_meta )
end

--// 元表函数
complex_meta.__add = function( cx1,cx2 )
   local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
   return complex.add( cx1,cx2 )
end
complex_meta.__sub = function( cx1,cx2 )
   local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
   return complex.sub( cx1,cx2 )
end
2017-05-16 08:25:23