在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是否被调用是有区别的。
时间: 2024-10-06 22:49:27