【发布时间】:2011-06-30 04:01:27
【问题描述】:
我可以在 smalltalk 中实现协程吗?
如果您的回答是否定的:为什么不呢?
如果是的话:你能给我举个例子吗?
【问题讨论】:
-
出租车你多解释一下?
我可以在 smalltalk 中实现协程吗?
如果您的回答是否定的:为什么不呢?
如果是的话:你能给我举个例子吗?
【问题讨论】:
大多数 Smalltalk 在 thisContext 对象上都有堆栈操作方法。你可以使用这些来实现协程,尽管在这个级别处理堆栈可能会有点乏味。
GNU Smalltalk 和最新版本的 Squeak 和 Pharo 还提供了一个生成器类,可以轻松编写生成器(即产生多个值的协程类型):
"This generator yield an infinite sequence of 1"
generator := Generator on: [ :gen | [ gen yield: 1 ] repeat ].
(1 to: 100) do: [:i | Transcript show: (generator next printString); cr]
【讨论】: