
😭 자막이 잘못 들어갔습니다.
이번 영상의 제목은
[11강 사용자 정의 콜백] 입니다.
std::function과 람다식은 cocos2d-x의 기능이 아니라 c++에 정의된 문법입니다.
여기서는 cocos2d-x 개발에 필요한 정도만 다루겠습니다.
람다식은 이미 스케줄이나 터치 이벤트 구현할 때 다뤘는데
불필요한 클래스 정의나 함수 선언을 줄이기 위해 온갖 군데서 쓸 수 있으니까 유용합니다.
콜백이나 함수를 인자로 전달하는 모든 경우에 적절하게 쓸 수 있습니다.
람다식의 구조는
[](){ };
로 거칠게 요약할 수 있고,
[] <-외부에서 받아올 변수의 범위 (우리가 다룰 때는 굳이 신경쓰지 않아도 됩니다)
() <- 람다식에 전달할 인자
{} <- 람다식 몸통
이렇게 됩니다.
※인자와 몸통 사이에 리턴 타입을 정의하는데, 흔히 생략됩니다.
std::function은 함수를 객체로서 다루는 방법입니다.
실행할 함수를 객체로 만든다는 건 인자로 전달할 수 있다는 것이고,
인자로 전달받은 쪽에서는 필요할 때 이 인자를 함수 형태로 호출할 수 있습니다.
이번에 사용한 객체화 펑션은 리턴타입과 인수가 없는 형태인데요,
당연히 리턴타입이나 인수가 있는 형태를 정의할 수도 있습니다.
예를 들어
typedef std::function<void(int)> FUNC;
FUNC cb;
같이 정의했다면, 콜백 때 인수로 정수값을 하나 돌려줄 수 있습니다.
cb(0);
이런 식으로.
이런 형태는 팝업창을 만들었고 팝업창에 여러개의 버튼(예/아니오, 한국어/영어/일어/독일어 등등)이 있을 경우
어느 버튼을 눌렀는지 인수로 돌려줄 때 사용할 수 있습니다.
이때 콜백에서 받는 람다식은
[=](int ret){
if(ret==0)
{
.....
}
};
이런 식으로 기재하게 됩니다.
at 2022/08/13 09:24
덧글