【问题标题】:difference between closures and continuations闭包和延续的区别
【发布时间】:2012-07-28 13:36:25
【问题描述】:

有人能解释一下闭包和延续之间的区别吗? wikipedia中的对应文章并没有真正比较两者的区别。

【问题讨论】:

    标签: closures continuations


    【解决方案1】:

    闭包是一个从声明它的环境中捕获数据的函数。

    int myVar = 0;
    auto foo = [&] () { myVar++; }; <- This lambda forms a closure by capturing myVar
    foo();
    assert(myVar == 1);
    

    延续是一个更抽象的概念,指的是之后应该执行的代码。它可以使用闭包来实现。

    myTask = Task([] () { something(); });
    myTask.then([=] () { myFoo.bar(); }); // This closure is the continuation of the task
    myTask.run();
    

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 2014-11-15
      • 2013-10-14
      • 1970-01-01
      • 2011-07-27
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多