Вопрос по continuations, closures – разница между замыканиями и продолжениями

7

Может кто-нибудь объяснить, пожалуйста, разницу между замыканиями и продолжениями? Соответствующие статьи в Википедии на самом деле не сравнивают различия между ними.

Ваш Ответ

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();

Похожие вопросы