新人写博客,有误之处或者不足之处望见谅并告知,感谢!
----------------------------------------我是分界线------------------------------------
本人目前刚从事Lua脚本工作,也算是第一次接触,上班第一天同事问我,是否懂得函数回调?????
函数回调???什么东西??懂得函数引用,以及之前使用过的js将函数名传参进去并调用、引用,不过他问的肯定没有这么简单。于是我上网搜资料。。。。
对自己汗颜~~~先看下图:
当初仅看了这么个解释,当时的状态算是一知半解就差代码实现。。。。。还是上网搜吧。。。。。搞了半天、搜了半天,依旧在这个瓶颈,之后同事实在看不下去了就给我写了一个简单的demo。
---------------------------一下是Lua的程序----------------------
--这是容器
local tb1={
a_ = {}
}
--记录信息 算是一个接口
function tb1:write(event, target, call)
self.a_[event] = {t = target, c = call}
end
--检查信息是否存在,若存在,则调用函数
function tb1:check(event, ...)
if self.a_[event] then
self.a_[event].c(self.a_[event].t, ...)
end
end
--这是目标容器
local b = {}
function b:p(msg) --目标函数,也是之后被回调的函数
print("传进来的信息是----"..msg)
end
tb1:write('a', b, b.p) --保存信息或者是注册信息
tb1:check('a', 'aaaaaaaaaa') --检查信息是否被注册
----------------------------------------Lua程序结束---------------------------------
程序原理:
write函数主要功能是注册信息,将传递进来的信息保存至tb1的表中,check函数主要功能是去检查event是否被注册,若成立则调用保存着的函数并将参数传递进去,这两个是主要功能函数。
p函数是打印函数,在这里当做被回调的函数,并且被保存,回调待命。
根据自己的理解简述下函数回调:
在一个空间中将事件与函数注册,之后从该空间中去寻找,若事件被触发则运行相应的函数。
跟函数引用的区别:
引用除了将信息传递进去之外,还需要将作用的函数传递进去,需要知道作用在哪个函数上;
而回调的机制不需要知道作用在哪个函数上,仅仅需要的是该事件已经被注册并且有相应的函数可以回调。
---------------------------------------------------------------这是一条丑爆了的分界线---------------------------------------------------
现在回想起来还是有点迷糊,如果哪里有失误之处望指教,新人小白首次发表,希望技术大牛多多指教!!
图片中的资源来自:http://blog.csdn.net/zhangliangzi/article/details/52066560