코드를 간단하게 표현할 수 있게 해주는 기능
람다식 (Lambda Expression)은 코드의 간결함과 가독성을 높혀주는 익명 매서드이다.
람다식을 알기 위해서 우리는 익명 매서드에 대하여 알아야한다.
익명 매서드란 매서드가 정의 없이 몸체 (기능)만 있는 매서드이다.
using UnityEngine;
using System;
public class Test : MonoBehaviour
{
delegate int Sum(int a, int b);
private void Start()
{
Sum sum = Add;
Debug.Log(sum(10, 20));
}
public int Add(int a, int b)
{
return a + b;
}
}
// 30 출력
이렇게 원래 델리게이트를 사용할 떄에는 미리 정의되어있던, 매서드를 넣어주어 사용을 했다.
하지만 여기서 delegate 키워드를 사용하여 매서드 정의 없이도 사용할 수 있다.
using UnityEngine;
using System;
public class Test : MonoBehaviour
{
delegate int Sum(int a, int b);
private void Start()
{
Sum sum = delegate(int a, in b)
{
return a + b;
};
Debug.Log(sum(10, 20));
}
}
// 30 출력
델리게이트에 넣어줄 매서드를 정의하지 않고, delegate 키워드를 사용하여 매서드 안의 기능들을 적어주면 익명 매서드를 만들어줄 수 있다.
람다식은 위의 익명 매서드를 더욱 더 간단하게 표현하게 해주는 것이다.
using UnityEngine;
using System;
public class Test : MonoBehaviour
{
delegate int Sum(int a, int b);
private void Start()
{
Sum sum = (int a, int b) => a + b;
Debug.Log(sum(10, 20));
}
}
// 30 출력
여기서 (int a, int b) 는 람다식의 매개변수이고, ⇒를 사용하여 매서드의 기능을 구분한다.
위 코드와 같이 한줄로 끝나는 간단한 코드는 중괄호를 생랼해도 된다.
onClicked.AddListener(() => Debug.Log("Button clicked!"));public event Action<int> myEvent;
private void Start()
{
myEvent += (int x) => Debug.Log(x);
myEvent -= (int x) => Debug.Log(x); // 작동 안함!
}