c++3.lambda表达式
大约 3 分钟
函数式编程
函数式编程(Functional Programming)是一种编程范式,它将计算视为数学函数的求值,并避免了可变状态和可变数据。 函数式编程强调函数的纯粹性、不可变性和无副作用,这些特性使得程序更容易推理、测试和并行化。
lambda表达式
定义
语法
[capture](parameters) -> return_type {
// 函数体
}
- []:这是捕获列表,指定 lambda 表达式中使用的外部变量。
- ():这是参数列表,类似于普通函数的参数列表。
- ->:这是一个箭头符号,用于指定返回类型。如果没有指定,编译器会自动推断返回类型。
- {}:这是函数体,包含了实际的代码。
例如,在数学中,我们可能有一个函数:
[ f(x) = x^2 ]
在编程中,可以使用Lambda表达式来表示类似的逻辑:
auto square = [](int x)
{
return x * x;
};
如果Lambda表达式的函数体更复杂,无法通过单一的return语句确定返回类型,或者你想要显式指定返回类型,那么你可以使用
->
符号来指定返回类型,例如:
auto complexLambda = [](int x) -> double {
// 复杂的函数体
return static_cast<double>(x * x);
};
在这个例子中,-> double
显式指定了Lambda表达式的返回类型为 double
。
特点
- 匿名性: Lambda表达式是匿名的,不需要显式地定义函数的名称。
- 紧凑性: Lambda表达式通常非常简洁,可以在一行内完成函数的定义。
- 传递行为: Lambda表达式可以作为参数传递给其他函数,从而实现更灵活的编程模式。
其他例子
// Lambda 表达式示例
auto sum = [](int a, int b) -> int {
return a + b;
};
// 使用 Lambda 表达式
int result = sum(5, 3); // result = 8