unity study #3 - 람다식

·2022년 8월 31일
0

Unity Study

목록 보기
3/8

람다 표현식

람다 표현식은 식 형태로 되어있다고 해서 람다 표현식이라고 부른다.

람다 표현식은 함수를 간단하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용한다.

람다 표현식은 변수에 할당하지 않고 람다 표현식 자체를 바로 호출할 수 있다. (이름없는 함수의 개념!!)

람다식의 장점

  • 한번만 쓸 함수일 경우엔 별도로 선언할 필요가 없다.

  • 코드를 이해할 때 한번에 다 이해하고 편하게 볼 수 있다. ( 사용과 함께 선언해주기 때문에 )

람다식 단점

  • 람다식을 잘 알고 있는사람이라면 가독성이 장점이 되겠으나, 잘 모르는 사람에게는 가독성이 나쁜 코드가 된다.

  • 디버깅이 어렵다 : 익명함수 기반이기 때문에, 익명함수 특성 상 함수 콜 스택 추적이 어렵다.


람다식 표현 네종류

// case 1
	view.OnClickSoundAsObservable()
    	.Subscribe(_ =>
        {
        	Debug.Log("Sound 버튼 클릭");
        }).AddTo(this);

// case 1-1
	view.OnClickSoundAsObservable()
    	.Subscribe(_ => Debug.Log("Sound 버튼 클릭"))
        .AddTo(this);
        
// case 2
	view.OnClickSoundAsObservable()
    	.Subscribe(_ => OnClickSound(_))
        .AddTo(this);
        
// case 2-2 뒤에 형식이 같으면 생략할 수 있다
	view.OnClickSoundAsObservable()
    	.Subscribe(OnClickSound)
        .AddTo(this);
        
// case2와 2-1 은 함수를 호출하는 람다 식
private void OnClickSound(Unit u)
{
	Debug.Log("Sound 버튼 클릭");
}

람다식을 일반적인 형태로 바꾸면 어떻게 될까?

public IObservable<string> ObserveChangeSelection() => m_OnChnageSelection.AsObservable();

처음 보면 다소 헷갈릴 수 있으나, 전체적인 형태로 보면 접근제한자 반환형식 함수명 => 리턴값 형태이다.

람다식을 빼고 표현하면

public IObservable<string> ObserveChangeSelection()
{
    return m_OnChnageSelection.AsObservable();
}

형태가 된다.


더 간단한 추가 예시를 보자면 아래와 같다.

private int a = 1;
public string A() => a.ToString();

// 위 형태를 람다가 아닌 형태로 바꾸자면?

public string A()
{
    return a.ToString();
}
profile
삶을 스스로 통제하고 있다는 느낌을 받을 때 더 행복하고 성공한다.🍃

0개의 댓글