매개변수가 있는 람다
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 43번째.
이제 기본적인 람다 구문을 이해했으므로, 매개변수를 추가하여 람다를 더 유용하게 만들어 보겠습니다. 일반 함수와 마찬가지로, 람다는 작업에 필요한 입력 값을 받을 수 있습니다.
람다에 매개변수를 추가하려면, 캡처 절 뒤의 괄호 안에 배치하십시오:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // 출력: Sum: 8매개변수 구문은 일반적인 함수 매개변수와 똑같이 작동합니다. 타입 뒤에 매개변수 이름을 지정하면 됩니다. 위에서 보여준 것처럼 쉼표로 구분하여 여러 개의 매개변수를 가질 수 있습니다.
람다를 변수에 저장하지 않고 매개변수와 함께 즉시 호출할 수도 있습니다:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // 출력: Product: 28매개변수를 받아들이는 이러한 능력은 람다를 훨씬 더 유연하고 재사용 가능하게 만들며, 호출될 때마다 서로 다른 입력 값을 처리할 수 있는 작은 함수를 만들 수 있게 해줍니다.
챌린지
쉬움다양한 수학 연산을 수행하는 간단한 계산기를 만들어 매개변수가 있는 람다 표현식을 시연하는 프로그램을 작성하세요. 이 챌린지는 입력값을 받아 처리하는 람다 표현식을 정의하는 방법에 대한 이해도를 테스트합니다.
다음과 같은 입력이 제공됩니다:
- 계산에 사용할 두 개의 정수
num1과num2 - 수행할 수학 연산을 나타내는 문자
operation
프로그램은 다음을 수행해야 합니다:
- 두 개의 정수 매개변수를 받아 그 합을
Sum: [result]형식으로 출력하는add라는 이름의 람다 표현식을 생성합니다. - 두 개의 정수 매개변수를 받아 그 차를
Difference: [result]형식으로 출력하는subtract라는 이름의 람다 표현식을 생성합니다. - 두 개의 정수 매개변수를 받아 그 곱을
Product: [result]형식으로 출력하는multiply라는 이름의 람다 표현식을 생성합니다. - 입력으로부터 두 숫자와 연산 문자를 읽습니다.
- 연산 문자에 따라 두 숫자를 사용하여 적절한 람다를 호출합니다.
연산 문자는 다음 중 하나입니다:
- 덧셈을 위한
+(add람다 호출) - 뺄셈을 위한
-(subtract람다 호출) - 곱셈을 위한
*(multiply람다 호출)
연산에 따라 다음의 정확한 출력 형식을 사용하세요:
덧셈의 경우:
Sum: [result]뺄셈의 경우:
Difference: [result]곱셈의 경우:
Product: [result]람다 매개변수는 일반 함수 매개변수와 동일한 구문을 사용하여 캡처 절 뒤의 괄호 안에 정의된다는 점을 기억하세요. auto 키워드를 사용하여 각 람다를 변수에 저장한 다음, if-else 문이나 switch 문을 사용하여 입력된 연산 문자에 따라 적절한 람다를 호출하세요.
치트 시트
람다 표현식은 캡처 절 뒤의 괄호 안에 매개변수를 배치하여 매개변수를 전달받을 수 있습니다:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // 출력: Sum: 8매개변수 구문은 일반 함수의 매개변수와 동일하게 작동합니다. 타입을 명시하고 그 뒤에 매개변수 이름을 적습니다. 여러 개의 매개변수는 쉼표로 구분합니다.
람다를 변수에 저장하지 않고 매개변수와 함께 즉시 호출할 수도 있습니다:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // 출력: Product: 28직접 해보기
#include <iostream>
using namespace std;
int main() {
// 입력 읽기
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: 더하기, 빼기, 곱하기 연산을 위한 람다 식 생성
// TODO: 연산자에 따라 적절한 람다를 호출하기 위해 if-else 또는 switch 문 사용
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.