Coroutine object II
虽然我们添加了“step1“和”step2“这样的方法,但是并没有强制按照这样的顺序来调用。而且,如果我们要给”step1”定义两个选项怎么办?例如,既可能是“step1_add”也可能是“step1_sub”。让我们来把coroutine object升级为第2版。
lua version: https://tio.run/
es2017 version: https://tio.run/
我们可以看到coroutine和object是非常类似的,但是coroutine更加强大。但是没有直接的语法支持,给coroutine添加method很笨拙。
第1章就到这里了。我们使用了这些方式来实现一个极其简单的流程functionobject => state machinecoroutine => coroutine object
Function在真实世界的使用中是不足够的。所以我们要么选择object要么选择coroutine来完整表达”未来“会发生的事情。Object对于它的预期是显式定义的,但是对于它的状态是隐式的。Coroutine对于它的状态是显式定义的,但是对于它的预期却是隐式的。我们尝试把object和coroutine合并到一起,但是成果有限。
我们还学习了多种形式的continuationpartial functionobject instancecoroutine instance
Continuation给接下来几章的复杂调度打下了基础。