在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
先看一段代码: local c=c or {} function c:onTouch() print "test in onTouch" end function handler(obj, method) return function(...) return method(obj, ...) end end
测试: 1: print(handler(c,c.onTouch)) print(c.onTouch(c)) 输出 function: 0x7f0d0884ae00
test in onTouch
2:
print(handler(c,c.onTouch)) print((function()c.onTouch(c)end)) 输出 function: 0x7f44d8d2ab40
function: 0x7f44d8d29e30
结论:
handler只不过是对method进行封装 套了一层匿名function并返回该匿名方法
所以handler(c,c.onTouch)()等价于c:onTouch()等价于c.onTouch(c)也同样等价于(function()c.onTouch(c)end())()
|
请发表评论