質問

SqueakでBlockClosureを取得するには(BlockClosure>> callCCを使用したい)

BlockContextである[#foo]を作成するときの対処法は何ですか?

更新:BlockClosureは主に新しいコンパイラのものであることを確認しました。

代わりに、シーサイドコンティニュエーションをどのように使用しますか?問題が発生しているので、例を挙げていただければ幸いです。

さらなる更新:この目的は、シーサイドを使用することではなく(少なくとも直接ではありません)、むしろ、独自の状態追跡イテレーターをローリングするよりも簡単な方法でトラバーサルなどを記述します。

役に立ちましたか?

解決

通常、Seasideでは、Continuationを自分で処理する必要はまったくありません。

コンポーネント内から #call:および #answer:を使用するだけです。

Seasideアプリケーションの作成以外に Continuation で何か他のことをしようとしている場合は、 WAComponent>> call:で使用例を確認してください。 。

またはこれを試してください。トランスクリプトウィンドウを開きます。ここで、ワークスペースで、このコードをすべて一度に選択してDo-itを実行します。

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

Transcript show: result.

Transcriptウィンドウに 1 が表示されます。次に、ワークスペースで次の操作を行います。

continuation value: 2

そして:

continuation value: 3

に渡す各値により、継続のコンテキストが復元され、新しい値がに割り当てられるため、 continuation に渡す各値がトランスクリプトに表示されるはずです。結果

うまくいけば...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top