簡體   English   中英

與海邊延續一起工作

[英]Working with Seaside continuations

如何在Squeak中獲得BlockClosure(我想使用BlockClosure >> callCC)?

當我寫[#foo]那是一個BlockContext時,怎么辦?

更新:我已經知道BlockClosure主要是新編譯器的東西。

相反,我如何與“海邊延展”一起使用? 我遇到了問題,任何示例都將不勝感激。

進一步更新:這樣做的目的不是使用海邊(至少不直接使用),而是以比滾動自己的狀態跟蹤迭代器更容易的方式編寫遍歷和其他此類操作。

通常,使用Seaside,您根本無需自己處理Continuation。

您只需在組件內部使用#call:#answer:

如果您嘗試使用Continuation做其他事情而不是編寫Seaside應用程序,請查看WAComponent>>call:以獲取用法示例。

或嘗試一下。 打開一個腳本窗口。 現在,在工作區中,一次選擇所有這些代碼,然后執行:

continuation := nil.
result := Continuation currentDo: [:cc |
   "store the continuation, cc, somewhere for later use"
   continuation := cc.
   1 ].

Transcript show: result.

您應該在“成績單”窗口中看到1 現在,在工作區中,執行以下操作:

continuation value: 2

接着:

continuation value: 3

您應該在“成績單”中看到傳遞給continuation每個值,因為傳遞給#value:的每個值都會導致延續的上下文得到恢復,並且將新值分配給result

希望有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM