Menu
Coddy logo textTech

람다 표현식 입문

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 42번째.

Lambda 표현식은 필요한 바로 그곳에서 작고 익명인 함수를 만들 수 있게 해 주는 강력한 C++ 기능입니다. Lambda 표현식을 별도의 function 선언을 작성할 without 정의하고 사용할 수 있는 미니 함수라고 생각해 보세요.

lambda expression의 기본 구문은 다음 패턴을 따릅니다: [](){}. 대괄호 []캡처 절이라고 하며, 괄호 ()에는 매개변수가 들어가고(일반적인 function과 마찬가지로), 중괄호 {}에는 function 본문이 들어갑니다.


캡처 절은 주변 스코프의 어떤 variable을 lambda가 사용할 수 있는지 제어합니다. 가장 일반적인 형식은 다음과 같습니다:

[=] — 모든 지역 variable을 값으로 캡처합니다(lambda가 자체 copy를 가짐)
[&] — 모든 지역 variable을 참조로 캡처합니다(lambda가 원본에 액세스함)
[] — 아무것도 캡처하지 않습니다(lambda는 외부 variable을 사용할 수 없음)

간단한 lambda를 Create하고 Call하는 방법은 다음과 같습니다:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // 람다 함수를 호출합니다

또한 lambda를 정의하고 variable에 storing하지 않고 immediately 실행할 수 있습니다:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Lambda expression은 별도로 정의하고 싶지 않은 짧은 일회성 function에 특히 유용합니다. 코드를 더 간결하게 만들고 관련 로직을 서로 가깝게 유지합니다.

challenge icon

챌린지

쉬움

람다 표현식의 기본 구문과 execution을 보여 주는 프로그램을 Create하세요. 이 challenge는 매개변수 없이 간단한 람다 function을 정의하고 Call하는 방법에 대한 이해도를 테스트합니다.

프로그램은 다음을 수행해야 합니다:

  1. Hello from Lambda!”를 출력하는 람다 표현식을 Create합니다
  2. auto keyword를 using하여 이 람다를 variable에 Store합니다
  3. 람다 function을 Call하여 이를 Execute합니다
  4. Lambda executed successfully!”를 출력하는 두 번째 람다 표현식을 Create합니다
  5. 이 두 번째 람다를 variable에 Store하지 않고 immediately Execute합니다

다음의 정확한 출력 형식을 사용하세요:

Hello from Lambda!
Lambda executed successfully!

람다 표현식은 [](){} 구문을 사용한다는 점을 기억하세요. 여기서 대괄호 []는 캡처 절이고, 괄호 ()에는 매개변수가 들어가며(이 challenge에서는 비어 있음), 중괄호 {}에는 function 본문이 들어갑니다. auto variableName = [](){...};을 using하여 람다를 variable에 Store한 다음 variableName();으로 Call할 수 있습니다. 즉시 execution하려면 [](){...}(); 구문을 사용할 수 있으며, 이를 통해 하나의 문장에서 람다를 정의하고 Call합니다.

직접 해보기

#include <iostream>
using namespace std;

int main() {
    // TODO: 아래에 코드를 작성하세요
    // Create a lambda expression that prints "Hello from Lambda!"
    // auto 키워드를 사용하여 변수에 저장하세요
    
    // 람다 함수를 호출하세요
    
    // Create a second lambda that prints "Lambda executed successfully!"
    // 변수에 저장하지 않고 즉시 실행하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직과 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러