Lambda Fuction
Definition
lambda function也可以称之为匿名function,你可以向lambda function传入参数,lambda function也可以返回参数,它和function唯一的区别就是没有名字。
Syntax of Lambda functions
auto var=[]() -> type
{
// function body
}; // 不要忘记这里的分号
auto var是我们想要创建的lambda function,auto代表类型由compiler决定,var可以看做是function pointer
[]是capture list,在capture list里面我们可以传入lambda function周围的参数,这样就可以在lambda function里面使用这些参数了
()是parameter list,跟普通的函数参数列表一样
-> type指定了lambda function返回的参数类型(return type),一般都可以省略。
例子:
int main(){
auto sayHi=[]() -> int{
std::cout << "hi" << std::endl;
return 0;
};
sayHi();
}
运行结果:
hi
从这个例子我们可以看出,我们创建了一个叫做sayHi的lambda function,它不需要使用任何参数,所以[]和()都是空的,而且它的return type是int。
由于sayHi只打印一个hi然后返回0,所以compiler知道返回类型是什么,我们可以省略,直接写成:
int main(){
auto sayHi=[](){
std::cout << "hi" << std::endl;
return 0;
};
sayHi();
}
如果我们想要传入参数,就传入到()里面,比如:
int main(){
auto sayHi=[](char *a, char *b){
std::cout << a << " says hi to " << b << std::endl;
return 0;
};
char person1[] = "Alice";
char person2[] = "Bob";