Lambda表达式
C++11引用了lambda, 允许inline 函数的定义式被用作一个参数,或是一个local对象。
Lambda语法
所谓lambda是一份功能定义式,可被定义与语句或表达式内部。因此可以拿lambda当作inline函数使用。
如:
下面展示一些 内联代码片
。
[]{
std::cout << "hello lambda" << std::endl;
}
可以直接调用它:
[]{
std::cout << "hello lambda" << std::endl;
}();
或把它传递给对象,使之能被调用
auto l = []{
std::cout << "hello lambda" << std::endl;
};
l();
Lambda 可以拥有参数,指明于小括号内,就像任何函数一样:
下面展示一些 内联代码片
。
auto l = [] (const std::string)
{
std::cout << s <<std::endl;
};
l("hello lambda")
范例:
下面展示一些 内联代码片
。
template<typename T>
void A::printElement(const T &cool)
{
auto l = [](QString l)
{
qDebug() << l;
};
for(const auto& elem : cool)
{
qDebug() << elem;
}
l("Pring element");
l("guang zhou ");
}
打印结果:
"Pring element"
"guang zhou "