Menu
CoddyTech

带参数的 Lambda

本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 43 课,共 56 课。

现在你已经了解了基本的 lambda 语法,接下来我们通过添加参数,让 lambda 更实用。和普通函数一样,lambda 可以接收输入值并进行处理。

要为 lambda 添加参数,请将它们放在捕获子句后面的括号内:

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // 输出:Sum: 8

参数语法与普通函数参数完全相同:先写类型,再写参数名称。你可以像上面那样用逗号分隔多个参数。

你也可以不保存 lambda,直接调用带参数的 lambda:

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // 输出:Product: 28

接受参数的能力让 lambda 更灵活,也更容易重复使用。你可以创建一些小函数,让它们在每次调用时处理不同的输入值。

challenge icon

挑战

简单

编写一个程序,通过构建一个能执行不同数学运算的简单计算器,演示带参数的 lambda 表达式。本挑战将测试你对如何定义接收输入值并使用这些值的 lambda 表达式的理解。

将提供以下输入:

  • 两个整数 num1 和 num2,表示用于计算的数字
  • 一个字符 operation,表示要执行的数学运算

你的程序应当:

  1. 创建一个名为 add 的 lambda 表达式,它接收两个整数参数,并按 Sum: [result] 的格式输出它们的和
  2. 创建一个名为 subtract 的 lambda 表达式,它接收两个整数参数,并按 Difference: [result] 的格式输出它们的差
  3. 创建一个名为 multiply 的 lambda 表达式,它接收两个整数参数,并按 Product: [result] 的格式输出它们的乘积
  4. 从输入中读取两个数字和运算字符
  5. 根据运算字符,使用这两个数字调用相应的 lambda 表达式

运算字符将是以下字符之一:

  • + 表示加法(调用 add lambda)
  • - 表示减法(调用 subtract lambda)
  • * 表示乘法(调用 multiply lambda)

根据运算使用以下确切的输出格式:

加法:

Sum: [result]

减法:

Difference: [result]

乘法:

Product: [result]

请记住,lambda 参数定义在捕获子句后面的括号内,语法与普通函数参数相同。使用 auto 关键字将每个 lambda 存储在一个变量中,然后根据输入的运算字符,使用 if-else 语句或 switch 语句调用相应的 lambda。

亲手试试

#include <iostream>
using namespace std;

int main() {
    // 读取输入
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO:为加法、减法和乘法运算创建 lambda 表达式
    // TODO:使用 if-else 或 switch 语句,根据运算类型调用对应的 lambda 表达式
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C++ 在线编译器