• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Lambda랑 delegate의 이해가 부족한거 같은데요

21.02.10 01:50 작성 조회수 301

2

AddUIEvent(go, (PointerEventData data) => { go.transform.position = data.position; }, Define.UIEvent.Drag);

여기서 Action<PointerEventData> action 자리에 저 람다식을 넣을 수 있는 이유가 뭔가요?

그리고 

GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked);

여기서 ObubttonClicked를 Action<PointereventData>에 넣을수 있는 이유가 뭔가요?

답변 2

·

답변을 작성해보세요.

1

Action<PointerEventData>
- PointerEventData를 input으로
- void를 output으로 받는 어떤 함수 타입도 받을 수 있으니

lamba를 만들 때 시그니처를 맞춰주면 Action<> 자리에 넣어줄 수 있습니다.

OnButtonClicked도 마찬가지입니다.

delegate 사용법중 Observer 패턴으로 만들기 위해
함수를 '기억'하는 용도도 있지만
그냥 정말 저렇게 함수 자체를 변수도 받는 역할도 합니다.

0

Hyobin Kim님의 프로필

Hyobin Kim

질문자

2021.02.10

생각을 너무 어렵게 하고 있었나 봅니다

해답의 실마리는 람다식 가장 첫부분에 있었네요

"함수를 변수로 받을 수 있게끔 해준다"

언제나 감사드립니다