Domanda

Come posso ottenere un BlockClosure in Squeak (voglio usare BlockClosure > > callCC)?

Quando scrivo [#foo] che è un BlockContext, qual è il problema?

Aggiornamento: ho scoperto che BlockClosure è principalmente un nuovo compilatore.

Invece, come lavoro con le continuazioni sul mare? Sto riscontrando problemi e qualsiasi esempio sarebbe apprezzato.

Ulteriore aggiornamento: lo scopo non è quello di usare la riva del mare (almeno non direttamente), ma piuttosto di scrivere traversali e altre cose del genere in un modo che sia più facile che realizzare i miei stessi iteratori di tracciamento dello stato.

È stato utile?

Soluzione

Normalmente, con Seaside, non devi mai affrontare da solo le Continuazioni.

Usa semplicemente #call: e #answer: dai tuoi componenti.

Se stai provando a fare qualcos'altro con Continuazione oltre a scrivere un'applicazione Seaside, dai un'occhiata a WAComponent > > call: per un esempio di utilizzo .

O prova questo. Apri una finestra di trascrizione. Ora, in un'area di lavoro, seleziona tutto questo codice contemporaneamente e fai-da-te:

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

Transcript show: result.

Dovresti vedere 1 visualizzato nella finestra Transcript. Ora, nell'area di lavoro, esegui:

continuation value: 2

e quindi:

continuation value: 3

Dovresti vedere ogni valore che passi a continuazione visualizzato nella Trascrizione perché ogni valore che passi a #value: fa ripristinare il contesto della continuazione e il nuovo valore assegnato a risultato .

Speriamo che aiuti ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top