cocos2dx - lua 에서 handler 분석

코드 먼저 보기:
local c=c or {}


function c:onTouch()
    print "test in onTouch"
end

function handler(obj, method)
    return function(...)
        return method(obj, ...)
    end
end

 
테스트:
1:
print(handler(c,c.onTouch))
print(c.onTouch(c))

출력
function: 0x7f0d0884ae00                                                                                                
test in onTouch
2:
print(handler(c,c.onTouch))
print((function()c.onTouch(c)end))

출력
function: 0x7f44d8d2ab40                                                                                                
function: 0x7f44d8d29e30 
 
결론:
handler 는 method 에 대해 익명 function 을 패키지 하고 익명 으로 돌아 가 는 방법 에 불과 합 니 다.
그래서 handler (c, c. onTouch) () 는 c: onTouch () 와 같은 가격 으로 c. onTouch (c) 와 같은 가격 으로 (function () c. onTouch (c) end () 와 같은 가격 으로 ()

좋은 웹페이지 즐겨찾기