1

我是一个刚刚学习 lambdas 的初学者,所以我只想制作一个 lambda,它从外部函数捕获一个局部变量,并且应该打印它的值并递减它直到它达到 0。它编译但不显示任何事物。为什么?

void dummyFn(int &num)
{
    int j = num;                                  
    [&j](){
        while (j != 0)
        {
            cout << j << endl;
            --j;
        }
    };
}
4

3 回答 3

4

您已经定义了一个 lambda,但您从未运行它。尝试

auto mylambda = [&j](){...}; 
mylambda();
于 2013-10-05T19:55:08.840 回答
2

“它编译但不显示任何东西。”

你需要使用它来调用它()

void dummyFn(int& num)
{
    int j = num;                                  
    [&j](){
        while (j != 0)
        {
            cout << j << endl;
            --j;
        }
    } (); // Call the function !
}
于 2013-10-05T19:56:44.227 回答
0

您的 lambda 已定义,但现在您必须运行它:

auto fn = [&j](){ ... };  // definition
fn();                     // Run

甚至:

[&j](){ ... } ();
//            ^^^

这两个示例都在运行该函数。

于 2013-10-05T19:56:38.070 回答