シーサイド継続での作業
-
03-07-2019 - |
質問
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
に渡す各値がトランスクリプトに表示されるはずです。結果
うまくいけば...
所属していません StackOverflow