##

람다 - 나무위키

1. 람다가 만들어진 이유

아래와 같은 코드가 있다고 해보자

public int Add(int a, int b)
{
		return a + b;
}

위 함수를 사용하려면

int result = Add(3, 5);

8

문제상황

이 함수는 한번만 사용할 건데?

이런경우 굳이 public int Add ~~~ 이런식으로 길게 만드는것이 귀찮다.

그래서

“함수를 변수처럼 만들어서 바로 전달하자”

라는 개념이 등장하는데 그게 오늘 설명할 람다이다.

2. 람다의 기본 문법

1. 일반함수

public int Add(int a, int b)
{
		return a + b;
}

2. 람다

(a, b) => a + b

두 코드의 의미는 거의 같다.

람다식을 읽는 방법은 다음과 같다.

매개변수(왼쪽)을 가지고(⇒) 오른쪽을 실행한다

3. Return은 어디로갔는가?

일반 함수

int Add(int a, int b)
{
		return a + b;
}

람다

(a, b) => a + b

한 줄이면 return 을 생략한다.

하지만 여러줄이라면?

다시 리턴을 사용해야한다.

(a, b) => 
{
		int c = a + b;
		return c;
}

4. 람다는 변수에 저장할 수 있다.

예를 들어

Func<int, int, int> add = (a, b) => a + b;

사용

int result = add(3, 5);

출력

8

여기서 알아야 할 것은 add는 변수이자 함수 라는것이다.

5. Func이란?

가장 많이 보는 형태

Func<int, int>

이건

입력 : int

출력 : int

사용

Func<int, int> square = x => x * x;

square(5)

25

매개변수가 두 개 라면

Func<int, int, int>

의미

입력 : int, int
출력 : int

매개변수가 세 개라면

Func<int, int, int, int>

의미

입력 : int, int, int
출력 : int

마지막 타입이 항상 반환형 이다.

6. Action이란?

반환값이 없는 함수이다.

예를들어

사용용

void Print(string Text)
{
		Console.WriteLine(text);
}

람다

Action<string> print = text => Console.WriteLine(text);

사용

print("Hello")

Func ⇒ 반환값 있음, Action ⇒ 반환값 없음

7. 람다가 쓰이는 이유

예를 들어 숫자들이 있다고 가정해보자.

List<int> numbers = [1, 2, 3, 4, 5];

이중에서 짝수만 찾고 싶다면?

예전방식

foreach(var n in numbers)
{
		if(n % 2 == 0) console.WriteLine(n);
}

람다 사용

numbers.where(x  x  % 2 == 0);

8. 람다를 사용하는 경우

람다는 짧고 간단한 동작에 가장 적합하다.

코드 아래 로직이 복잡하다면 일반 메서드가 사용하는데 훨씬 용이하니 여러 코드를 작성해 보면서 판단해 보도록 하자.