[C#]람다란?
람다에 대하여 알아보자.
##
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. 람다를 사용하는 경우
람다는 짧고 간단한 동작에 가장 적합하다.
코드 아래 로직이 복잡하다면 일반 메서드가 사용하는데 훨씬 용이하니 여러 코드를 작성해 보면서 판단해 보도록 하자.
댓글
GitHub 계정으로 의견을 남길 수 있습니다.
GitHub에서 댓글 삭제