Lambda 是一种函数,lambda函数 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。这种函数可以定义在函数内部,所以Lambda函数里可以嵌套Lambda函数Lambda功能强大,外面的数据不想通过传到Lambda函数里的()里,可以传递到[]里,传到[]里会默认补上const
个人感觉是lambda这个函数可以写在函数里。
1.直接使用Lambda函数
auto Hello = []()
{
};
#include <iostream>
using namespace std;
int main()
{
int id = 2048;
auto Print= [id]( char* buff)
{
auto Func = [](const int a)
{
printf("%d\n", a);
};
Func(20);
printf("%s\n", buff);
Func(id);
};
char buffer[1024] = "Lambda函数";
Print(buffer);
return 0;
}
运行结果如下图所示:
2.在类中使用Lambda函数
- 类成员函数Lambda
- []填入&可以包含当前作用域中/类的所有成员变量
- Lambd函数也可以有返回值 在()后面添加->类型
例如下面的
auto Func= [&]() ->bool
{
return false;
};
具体案例:
#include <iostream>
using namespace std;
class Manager
{
public:
int age;
int level;
float salary;
public:
Manager(int age, int level, float salary);
void PrintInfo();
};
Manager::Manager(int age, int level, float salary)
{
this->age = age;
this->level = level;
this->salary = salary;
}
void Manager::PrintInfo()
{
auto ManagerAge = [&]()
{
cout << "age = " << age << endl;
};
auto ManagerLevel = [&]() -> bool
{
cout << "level = "<< level << endl;
if (level == 10)
{
return true;
}
else
{
return false;
}
};
auto ManagerSalary = [&]()
{
cout << "salary = "<< salary << endl;
};
ManagerAge();
bool isBoss = ManagerLevel();
ManagerSalary();
if (isBoss != true)
{
cout << "该经理不是隐藏的Boss" << endl;
}
else
{
cout << "该经理是幕后Boss,经理职位只是来体验生活" << endl;
}
}
int main()
{
Manager manager(28, 2, 6800.f);
manager.PrintInfo();
return 0;
}
结果如下图:
|