【问题标题】:How are coroutines implemented in smalltalk?smalltalk 中的协程是如何实现的?
【发布时间】:2011-06-30 04:01:27
【问题描述】:

我可以在 smalltalk 中实现协程吗?

如果您的回答是否定的:为什么不呢?

如果是的话:你能给我举个例子吗?

【问题讨论】:

  • 出租车你多解释一下?

标签: smalltalk coroutine


【解决方案1】:

大多数 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]

【讨论】:

  • 你知道Pharo 1.3是否也可以实现Generators?
  • 生成器已进入 Pharo 1.4。将 Pharo 添加到答案中。
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2020-04-27
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
相关资源
最近更新 更多