Open xxleyi opened 4 years ago
什么是 continuation 呢?该怎么理解和把握 continuation 呢?
lisp - scheme continuations for dummies - Stack Overflow
从这篇 SO 回答入手,是个不错的开始。
视角要切换到程序流,然后再来尝试理解它。
在程序流中,下一步做什么:
那我们在程序中,可以怎样控制下一个表达式或者语句呢?
在这种实现中,最简单的应用是函数栈
函数调用在本质上是一种涉及到执行上下文切换的程序流控制操作。
像其它的 if while for break label,都只是在同一个执行上下文内部控制程序流流转。
那么,能不能有一种手段,可以更轻松的控制程序流流转的同时,切换执行上下文呢?
continuation 就是这样一种手段。
而我们熟知的迭代器,生成器,便是它的特例。
要实现这样一种能力:执行上下文栈出栈时,将弹出的执行上下文保存,而不是销毁,并在合适的时机,将这个执行上下文重新入栈。
什么是 continuation 呢?该怎么理解和把握 continuation 呢?
lisp - scheme continuations for dummies - Stack Overflow
从这篇 SO 回答入手,是个不错的开始。
视角要切换到程序流,然后再来尝试理解它。
在程序流中,下一步做什么:
那我们在程序中,可以怎样控制下一个表达式或者语句呢?
在这种实现中,最简单的应用是函数栈
函数调用在本质上是一种涉及到执行上下文切换的程序流控制操作。
像其它的 if while for break label,都只是在同一个执行上下文内部控制程序流流转。
那么,能不能有一种手段,可以更轻松的控制程序流流转的同时,切换执行上下文呢?
continuation 就是这样一种手段。
而我们熟知的迭代器,生成器,便是它的特例。
要实现这样一种能力:执行上下文栈出栈时,将弹出的执行上下文保存,而不是销毁,并在合适的时机,将这个执行上下文重新入栈。