8

有人可以解释闭包和延续之间的区别吗?维基百科中的相应文章并没有真正比较两者之间的差异。

4

1 回答 1

7

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

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();
于 2012-07-28T13:47:44.963 回答