[상단] 루아의 핸들러와function () 함수 매개 변수의 차이

1632 단어 functionluacocos2d-x
quick-cocos2d-xlua의 개발 과정에서 우리는 매개 변수를 전달할 때 함수를 우리의 매개 변수로 전달해야 한다. 보통 두 가지 방법이 있다. 하나는 function을 사용하여 우리의 함수를 포장하는 것이고, 다른 하나는 Handler로 우리의 함수를 봉하는 것이다. 이 두 가지 방법은 사용할 때 현저히 다르다. 다음은 내가 퀵에 있는 코드를 붙여서 내가 이해하는 양자의 차이를 설명하고자 한다.
우선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가 호출되는지 여부와 차이가 있습니다.

좋은 웹페이지 즐겨찾기