closures - 闭包和延续之间的区别

标签 closures continuations

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

最佳答案

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

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

关于closures - 闭包和延续之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701486/

相关文章:

php - include inside 闭包

smalltalk - Smalltalk 如何操作调用栈帧(thisContext)?

C++20 协程使用 Final_suspend 进行延续

recursion - 返回递归闭包的函数签名

python - python中的那个名字是什么

Groovy:隐式调用不适用于闭包内的实例变量

javascript - JavaScript 函数中的 var 作用域

javascript - 对于 JavaScript 中的闭包,在一个函数中声明另一个函数有什么意义?

ruby - Ruby 中的延续

haskell - 将 Scheme call/cc 翻译成 Haskell callCC