lua中定义操作符行为的元方法(重载操作符)

在c++中可以重载操作符,在lua中也有,不过lua是通过元方法实现的,异曲同工,都是一样的

比如c++,重载了+之后,具体做什么都是自己实现,lua也一样

 

定义操作符行为的元方法有:

__add对应的运算符 '+'.       可以定义已定义操作符的表和其他表相加的行为,以及操作的值(返回值)(下同)
__sub对应的运算符 '-'.       
__mul对应的运算符 '*'.
__div对应的运算符 '/'.
__mod对应的运算符 '%'.
__unm对应的运算符 '-'.       可以定义已定义操作符的表,在负的时候的行为,以及操作的值(返回值)
__concat对应的运算符 '..'.
__eq对应的运算符 '=='.
__lt对应的运算符 '<'.
__le对应的运算符 '<='.

 

例:

1.二元操作符

t = setmetatable({1},{__add =
  function(mytable, newtable)
    --body

    --这里定义__add元方法通过+号遇到另一个table时的行为

    --return table

  end})

这个模型适用于二元操作符,上面是定义了两表相加的具体操作,最后必须放回一个表,表示相加的值,所有的二元操作符都可以使用这个模型

2.一元操作符

负号是一元操作符

t = setmetatable({1},{__unm = 
  function(mytable) 
    --body

    --这里定义表遇到负号时的行为以及他的值

    --return table

  end})

转载于:https://www.cnblogs.com/xzxdm/p/7523748.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值