【问题标题】:C++ Beginner Lambda'sC++ 初学者 Lambda 的
【发布时间】:2013-10-12 16:20:27
【问题描述】:

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

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

【问题讨论】:

  • 你为什么要引用自己?!

标签: c++ function lambda scope


【解决方案1】:

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

auto mylambda = [&j](){...}; 
mylambda();

【讨论】:

    【解决方案2】:

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

    您需要使用() 调用它

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

    【讨论】:

      【解决方案3】:

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

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

      甚至:

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

      两个例子都在运行这个函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多