Trabalhando com Mar continuações
-
03-07-2019 - |
Pergunta
Como faço para obter um BlockClosure em Squeak (eu quero usar BlockClosure >> callCC)?
Quando eu escrevo [#foo] que é um BlockContext, qual é o problema?
Update:. Eu tenho trabalhado para fora que BlockClosure é uma coisa, principalmente, de novo compilador
Em vez disso como posso trabalhar com Continuations à beira-mar? Estou tendo problemas, e os exemplos seria apreciada.
Além disso update: O objetivo deste não é para uso balnear (pelo menos não diretamente), mas sim para traversals gravação e outras coisas de uma forma que é mais fácil do que rolar meus próprios iteradores de rastreamento de estado
.Solução
Normalmente, com Seaside, você nunca tem que lidar com Continuations si mesmo em todos.
Você acabou de usar #call:
e #answer:
de dentro de seus componentes.
Se você está tentando fazer outra coisa com Continuation
diferente de escrever uma aplicação Mar, dê uma olhada WAComponent>>call:
para um exemplo de uso.
Ou tente isso. Abra uma janela de Transcrição. Agora, em um espaço de trabalho, selecione todos este código de uma vez e Do-lo:
continuation := nil.
result := Continuation currentDo: [:cc |
"store the continuation, cc, somewhere for later use"
continuation := cc.
1 ].
Transcript show: result.
Você deverá ver 1
exibido na janela de Transcrição. Agora, no espaço de trabalho, fazer:
continuation value: 2
e, em seguida:
continuation value: 3
Você deverá ver cada valor que você passa para continuation
exibido na transcrição porque cada valor que você passa para #VALUE:. Faz com que o contexto da continuação para ser restaurado e o novo valor atribuído a result
Espero que ajude ...