首页 > 代码库 > lua中的handler和function()作为函数参数的不同
lua中的handler和function()作为函数参数的不同
在quick-cocos2d-x lua的开发过程中,我们在传递参数的时候需要传入函数作为我们的参数,通常有两种方法,一种是使用function把我们的函数包起来,另一种是用handler将我们的函数封装起来,这两种方法在使用的时候是明显不同的,下面我就要贴出自己在quick中的代码来说明我理解的二者的不同。
首先是handler,如果我们的参数函数本身是没有参数的,那么应该是:
local MainScene = class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() end function MainScene:onEnter() self:func2(handler(self, self.func1)) end function MainScene:func1() print("haha") end function MainScene:func2(func) func() end return MainScene
如果这个handler中所包装的函数是带参数的,那么代码应该是:
local MainScene = class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() end function MainScene:onEnter() self:func2(handler(self, self.func1)(22)) end function MainScene:func1(h) print("haha" .. " " .. h) end function MainScene:func2(func) --func() end return MainScene
如果我们用function, 无论带不带参数,我们用如下的方法均可:
local MainScene = class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() end function MainScene:onEnter() self:func2(function() self:func1(22) end) end function MainScene:func1(h) print("haha" .. " " .. h) end function MainScene:func2(func) func() end return MainScene
注意:第一段代码和第二段代码的func2对于其中的func是否被调用是有区别的。
lua中的handler和function()作为函数参数的不同
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。