람다식은 실제로
업무하면서 사용하는 경우를 거의 본 적이 없긴하지만,
오히려 그렇기 때문에
더 알아둬야하고, 필요한 경우가 생길 때
바로바로 사용할 수 있도록 공부해둬야 한다.
여기 있는 글은
6~7년차 개발자의 기준으로 나에게 필요한 부분만
정리해두는 글이기 때문에,
자세한 설명은 보다 이해가 안되는 부분이 나오면
댓글이나 직접 찾아보는걸 추천한다.
람다식의 기본 형태는
[] ( ) { } ( )
[캡처] (매개변수) { 함수 동작 } (호출인자)
이런 형태이며,
실제로 사용하는 모습은
이런 형태로 생겼다.
실행해보면 결과는
이렇게 나온다.
간단하게 기본 형태를 토대로 설명해보면,
auto lambdaTest 일단 람다식은 auto 타입을 통해 변수로 받아서 사용할 수 있다.
즉 auto lambdaResult = lambdaTest(" Test"); 이런식으로 변수에 람다식의 결과 값을 넣을 수 있는 것이다.
함수를 만들어 필요할때 마다 사용하는 것과 비슷하다고 보면 될 것 같다.
[&str1, &str2]
이 부분은 캡처라는 부분이고
call by reference나 call by value로 안의 변수를 가져다 쓸 수 있다.
위의 예제에서 call by value로 바꾸려면, &만 제외하면 되겠다.
(string str3)
이 부분은 우리가 많이들 아는 매개변수 부분이다. 특별히 설명할 건 없을 것 같다.
이 부분 역시 우리가 다 아는 실제 동작 부분이다. 설명할 건 없는 것 같다.
그리고 마지막 부분인 (호출인자) 부분은 생략되었는데,
만약 위의 소스를 호출인자까지 사용한다면,
이런식으로 해주면 된다.
결과에 대해 설명하면,
사실 그냥 문자열 더하기 뿐인 동작 부분이라
그냥 str1, str2, str3을 더하면 끝이다.
그럼 람다식은 어디에 써야 될까? 라는 근본적인 의문이 생기는데,
람다식의 장점은 함수의 파라미터로 사용할 수 있다는 것이다.
예를 들면,
이런 식으로 사용할 수 있는데,
지금은 람다식을 주석처리 해두었기 때문에
디폴트인 오름차순으로 정리되어 결과 값이 나온다.
하지만 람다식을 풀면
내림차순으로 정리가 된다.
이렇게 람다식은 함수의 매개변수로도 사용이 가능하다.
아마 내가 직접 사용한다면,
한번만 사용해야 하는 곳인데 따로 함수로 빼기는 싫고 할 경우에
간단하게 사용하는 식으로
많이 사용할 것 같다.
'C, C++ > 기술노트' 카테고리의 다른 글
가변인자 (0) | 2023.08.10 |
---|---|
Template (0) | 2023.07.26 |
stringstream 공부 (0) | 2023.06.29 |