8

誰かがクロージャと継続の違いを説明できますか? ウィキペディアの対応する記事では、2 つの違いを実際に比較していません。

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 に答える