Lambda 表达式简介
本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 42 课,共 56 课。
Lambda 表达式是 C++ 的强大功能,可以让你在需要的地方创建小型匿名函数。你可以把它们看作迷你函数,无需单独编写函数声明,就能定义并使用它们。
lambda 表达式的基本语法遵循以下模式:[](){}。方括号 [] 称为捕获子句,圆括号 () 用来存放参数(和普通函数一样),花括号 {} 则包含函数体。
捕获子句用于控制 lambda 可以使用外围作用域中的哪些变量。最常见的形式有:
[=]:按值捕获所有局部变量(lambda 会获得变量的副本)[&]:按引用捕获所有局部变量(lambda 会访问原变量)[]:不捕获任何变量(lambda 不能使用任何外部变量)下面介绍如何创建并调用一个简单的匿名函数:
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // 调用 lambda 函数你也可以不将 lambda 存储在变量中,直接定义并执行它:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Lambda 表达式特别适合用来编写简短的一次性函数,这样你就不必单独定义它们。它们能让代码更简洁,并将相关逻辑放在一起。
挑战
简单编写一个程序,演示 lambda 表达式的基本语法和执行方式。本挑战将测试你对如何定义和调用不带参数的简单 lambda 函数的理解。
你的程序应该:
- 创建一个打印
Hello from Lambda!的 lambda 表达式 - 使用
auto关键字将这个 lambda 存储在一个变量中 - 调用这个 lambda 函数来执行它
- 创建第二个打印
Lambda executed successfully!的 lambda 表达式 - 立即执行第二个 lambda,不要将它存储在变量中
请使用以下精确的输出格式:
Hello from Lambda!
Lambda executed successfully!请记住,lambda 表达式使用 [](){} 这种语法,其中方括号 [] 是捕获子句,圆括号 () 用于放置参数(本挑战中为空),花括号 {} 用于包含函数体。你可以使用 auto variableName = [](){...}; 将 lambda 存储在一个变量中,然后使用 variableName(); 调用它。若要立即执行,可以使用 [](){...}(); 这种语法,在一条语句中定义并调用 lambda。
亲手试试
#include <iostream>
using namespace std;
int main() {
// TODO:在下面编写你的代码
// 创建一个输出 "Hello from Lambda!" 的 lambda 表达式
// 使用 auto 关键字将它存入变量
// 调用这个 lambda 函数
// 创建第二个输出 "Lambda executed successfully!" 的 lambda 表达式
// 立即执行它,不要存入变量
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C++ 在线编译器