首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Seaside延续

使用Seaside延续
EN

Stack Overflow用户
提问于 2008-10-20 21:16:28
回答 1查看 938关注 0票数 2

如何在Squeak中获取BlockClosure (我想使用BlockClosure>>callCC)?

当我写#foo时,这是一个BlockContext,这是怎么回事?

更新:我发现BlockClosure主要是一种新的编译器。

取而代之的是,我如何处理海边的延续?我遇到了一些问题,任何例子都将不胜感激。

进一步更新:这样做的目的不是为了使用seaside (至少不是直接使用),而是以一种比滚动自己的状态跟踪迭代器更容易的方式来编写遍历和其他类似的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-10-21 15:34:08

通常,使用Seaside时,您根本不必自己处理Continuations。

您只需在组件中使用#call:#answer:即可。

如果您正在尝试使用Continuation做其他事情,而不是编写Seaside应用程序,请查看WAComponent>>call:的用法示例。

或者试试这个。打开一个文本窗口。现在,在一个工作区中,一次选择所有这些代码并执行它:

代码语言:javascript
复制
continuation := nil.
result := Continuation currentDo: [:cc |
   "store the continuation, cc, somewhere for later use"
   continuation := cc.
   1 ].

Transcript show: result.

您应该会看到1显示在脚本窗口中。现在,在工作区中,执行以下操作:

代码语言:javascript
复制
continuation value: 2

然后:

代码语言:javascript
复制
continuation value: 3

您应该会看到您传递给continuation的每个值都显示在脚本中,因为您传递给# value :的每个值都会导致恢复延续的上下文,并将新值分配给result

希望这能帮上忙。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/219958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档