[lua] __call metamethod的用处

7500阅读 0评论2014-08-29 areece
分类:嵌入式

自认为跟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()


上一篇:luajit与VC的集成
下一篇:[lua] coroutine学习小结