Menu
Coddy logo textTech

람다 표현식 입문

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

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

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


캡처 절은 람다가 주변 범위의 어떤 변수를 사용할 수 있는지 제어합니다. 가장 일반적인 형태는 다음과 같습니다:

[=]: 모든 지역 변수를 값으로 캡처합니다(람다는 자체 copy를 얻습니다)
[&]: 모든 지역 변수를 참조로 캡처합니다(람다는 원본에 액세스합니다)
[]: 아무것도 캡처하지 않습니다(람다는 외부 변수를 사용할 수 없습니다)

간단한 람다를 만들고 호출하는 방법은 다음과 같습니다:

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

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

또한 lambda를 정의하고 immediately 실행할 수 있으며, variable에 storing하지 않고(without) 실행할 수도 있습니다:

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

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

challenge icon

챌린지

쉬움

Create 간단한 매개변수 없는 lambda function을 정의하고 호출하는 방법에 대한 이해도를 확인하기 위해, lambda expression의 기본 구문과 execution을 보여 주는 프로그램을 작성하세요. 이 challenge에서는 매개변수 없이 간단한 lambda function을 정의하고 호출하는 방법을 이해했는지 테스트합니다.

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

  1. Create Hello from Lambda!를 prints하는 lambda expression
  2. 이 lambda를 auto keyword를 using하여 variable에 Store
  3. lambda function을 Call하여 실행
  4. Lambda executed successfully!를 prints하는 second lambda expression을 Create
  5. 이 second lambda를 variable에 Store하지 않고 immediately Execute

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

Hello from Lambda!
Lambda executed successfully!

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

직접 해보기

#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++ 컴파일러