码迷,mamicode.com
首页 > 其他好文 > 详细

lua中的handler和function()作为函数参数的不同

时间:2014-12-23 12:32:48      阅读:430      评论:0      收藏:0      [点我收藏+]

标签:lua   cocos2d-x   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()作为函数参数的不同

标签:lua   cocos2d-x   function   

原文地址:http://blog.csdn.net/y505772146/article/details/42099465

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!