1、Lambda:可以知道其他变量的内联函数
2、格式:
auto var = [capture-clause] (auto param) -> bool
{
代码主体
};
其中:
[ capture_clause ]:表示函数使用的外部变量
(auto param):表示 lambda 函数的参数
列如代码( isMoreThan 是一个lambda函数的函数签名):
int limit = 5;
auto isMoreThan = [limit] (int n) { return n > limit; };
isMoreThan(6);
对于外部变量 [capture_clause] 部分,可以存在以下的使用形式:
[ ] 什么都没有
[ limit ] 一个参数
[ &limit ] 一个引用参数
[ &limit, upper ] 引用参数的 限制 以外的值
[ &, limit ] 引用参数的 限制 以内的值
[ & ] 引用参数的一切值
[ = ] 满足一定条件的值
3、Lambda的使用范围和注意事项
当我们需要一个简短的函数,或者一个对局部变量有读写访问权限的函数时,可以使用lambda。
使用函数指针可以用于更长的逻辑和重载
我们使用 auto 是因为类型是在编译时确定的
lambad的本质是创建函数的语法。
如果lambdas是函数类,那么“闭包”是这些类的实例。
在运行时,闭包作为lambda类的实例生成。



