-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Lambda Function(匿名函数):
语法
[capture](parameters) -> return_type { function_body }
例:[](int x, int y) -> int { return x + y; }
如果 lambda 代码块中包含了 return 语句,则该 lambda 表达式的返回类型由 return 语句的返回类型确定。如果没有 return 语句,则类似 void f(...) 函数。
Lambda表达式可以访问在它被调用的作用域内的局部变量。
capture 指定了在可见域范围内 lambda 表达式的代码内可见得外部变量的列表,具体解释如下:
- [a,&b] a变量以值的方式被捕获,b以引用的方式被捕获。
- [this] 以值的方式捕获 this 指针。
- [&] 以引用的方式捕获所有的外部自动变量。即可修改外部自动变量。
- [=] 以值的方式捕获所有的外部自动变量。即不可修改外部自动变量。
- [] 不捕获外部的任何变量。
例:

params 指定 lambda 表达式的参数。
优点:
函数对象能维护状态,但语法开销大,而函数指针语法开销小,却没法保存范围内的状态。
lambda函数结合了两者的优点,让你写出优雅简洁的代码。
何时使用lambda:
你在某处就真的只需要一个能做一件事情的函数而已,连它叫什么名字都无关紧要。
Lambda 表达式就可以用来做这件事。
例:

输出:

Metadata
Metadata
Assignees
Labels
No labels