C ++初学者Lambda's

时间:2013-10-05 19:53:37

标签: c++ function lambda scope

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

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

3 个答案:

答案 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](){ ... } ();
//            ^^^

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