我是初学者,只是学习lambdas,所以我只想制作一个从外部函数捕获局部变量的lambda,并且应该打印它的值并递减它直到它达到0.它编译但不是不显示任何东西。为什么呢?
void dummyFn(int &num)
{
int j = num;
[&j](){
while (j != 0)
{
cout << j << endl;
--j;
}
};
}
答案 0 :(得分:4)
您已经定义了一个lambda,但是您从未运行它。试试
auto mylambda = [&j](){...};
mylambda();
答案 1 :(得分:2)
“它编译但不显示任何内容。”
您需要使用()
void dummyFn(int& num)
{
int j = num;
[&j](){
while (j != 0)
{
cout << j << endl;
--j;
}
} (); // Call the function !
}
答案 2 :(得分:0)
您的lambda已定义,但现在您必须运行它:
auto fn = [&j](){ ... }; // definition
fn(); // Run
甚至:
[&j](){ ... } ();
// ^^^
两个示例都在运行该函数。