Lua 如何重载运算符

我们都知道在C++中,可以通过重载运算符来实现代码的简练。在lua中我们也可以实现类似的操作。先举个例子:

local cood = {}

function cood:new(x,y)
  local o = {}
  setmetatable(o,self)
  o.x = x
  o.y = y
  return o
end

cood.__add=function (a,b)
  local x = a.x+b.x
  local y = a.y+b.y
  return cood:new(x,y)
end

local a = cood:new(1,2)
local b = cood:new(3,4)
local c = a+b
print(c.x,c.y)

可以看到,我们通过重载”+”运算符来实现了两个对象的简单相加,输出如下:

4	6

除了”+”运算符之外,lua还提供一下的运算符让我们重载
__add: 对+进行重载
__sub: 对-进行重载
__mul: 对*进行重载
__div: 对/进行重载
__unm: 对相反数进行重载
__mod: 对%进行重载
__pow: 对^进行重载
__concat: 对连接操作符进行重载
__eq: 对==进行重载
__lt: 对<进行重载
__le: 对<=进行重载
在以后的编码中,我们就可以利用运算符的重载,来简化一些操作了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值