Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508383
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: 嵌入式

2014-08-29 10:59:02

自认为跟C++中的functor比较像,C++中的functor就是重载了operator()的对象,当把一个C++对象当成函数一样调用obj()时,实际上启动了对于obj的operator()的调用,于是一个可被调用的对象就产生了,如果写成obj.()可能会比较符合对象方法的一般做法。

lua table如果设置了metamethod __call,调用对象luaobj()时,会调用到__call方法,具体调用机制跟其它的metamethod没有什么区别。一段简单的代码说明问题:

  1. ev={}
  2. functin ev.__call()
  3.   print "called from ev"
  4. end

  5. setmetatable(ev, ev)

  6. -- test it
  7. ev()


阅读(7219) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~