Lambda 表达式
Lambda 表达式详细介绍
Lambda 表达式是匿名函数的简写形式,允许在代码中直接定义函数而无需命名,常用于简化代码、实现回调或作为参数传递。它在现代编程语言(如 C++、Python、Java、C#)中广泛支持,尤其在函数式编程和异步操作中极为高效。
Lambda 的核心组成(以 C++ 为例)
Lambda 的基本语法如下:
[捕获列表] (参数列表) -> 返回类型 {
函数体 }
每个部分的详细说明:
1. 捕获列表(Capture List)
定义 Lambda 如何访问外部作用域的变量。
[]
:不捕获任何外部变量。[=]
:以值捕获所有外部变量(默认只读,需mutable
修饰才能修改副本)。[&]
:以引用捕获所有外部变量(直接操作原变量)。[var]
:显式捕获特定变量(值捕获)。[&var]
:显式捕获特定变量的引用。- 混合捕获:
[=, &x]
(值捕获全部,但x
为引用)。
示例:
int x = 10, y = 20;
auto lambda = [x, &y]() {
y = 30; // 合法,y 是引用
// x = 5; // 错误!值捕获的 x 是只读(除非使用 mutable)
};
2. 参数列表(Parameters)
与普通函数的参数列表一致,支持默认参数和类型推导(C++14+)。
auto add = [](int a, int b) {
return a + b; };
3. 返回类型(Return Type)
- 显式声明:
-> T
指定返回类型(例如-> bool
)。