람다와 액션

람다! 아는척 하고 있었지만…

” 람다! “

” 하면 () => 뭐 이런식으로 사용하는….”

” 아무튼 콜백이 어쩌고 …. “

솔직히 잘 모르고 지금 껏 간혹 사용하고 있었다.

( 비쥬얼 스튜디오의 힘을 믿고 , 빨간 줄이 안나올 때까지 눈치껏 고쳐본다던가 ..)

문제는 C# 에서 제공하는 ( 처음에는 Unity 에서 제공하는 건 줄 알았다 . )

Action 타입을 인자로 제공할 때에 발생했다.

// 아래와 같은 함수가 있었는데 , 
void foo( Action action)
{
  DoSomething();
  action.Invoke();
} 

// 이 함수를 저 위의 action 에 대입하려고 했다
void Act(string nameOfWhatToDo)
{
  Human.Do(nameOfWhatToDo); // 별로 좋은 구조는 아니지만 ㅎㅎ.. 
}

// 이렇게 
//( 유니티 )
void Start()
{
  string strInputForAct = "공부";

  foo( Act ) ; // 만약 Act의 인자가 없었다면 이렇게 했겠지만.. 버젓이 있었다 ! 
  
  foo ( () => Act(strInputForAct));// 이리 저리 짜맞추어 본 결과는 이렇게 했다. 

  // 참고 
  foo( delegate(string str){ Act(str);}); // 나중에 검색해보니 , 원래는 이렇게 하는 것 같다 ( 무명 딜리게이트 )
}

퇴근하고 돌아와 더 찾아보니 ,

Unity 가 아니라 C# 에서 제공하는

Func 와 Action 이 있으며,

Func는 리턴 값을 가지고

Action 은 가지지 않는 다는 것을 빼면 둘의 용법은 같다.

Func <string ,int > 이면 인자가 string 이고 int 리턴값이라는 의미이므로 주의하자.

AI 개발과 인지부채

AI를 이용한 개발에서 인지부채를 마주하고, 같은 패턴으로 파티가 전멸하지 않으려면 Continue reading

카페에서 우연히

Published on May 31, 2026

근황

Published on May 17, 2026