Pregunta

¿Cómo obtengo un BlockClosure en Squeak (quiero usar BlockClosure > > callCC)?

Cuando escribo [#foo] que es un BlockContext, ¿cuál es el problema?

Actualización: he descubierto que BlockClosure es una cosa principalmente del nuevo compilador.

En su lugar, ¿cómo trabajo con las continuaciones de la costa? Estoy teniendo problemas, y cualquier ejemplo sería apreciado.

Actualización adicional: el propósito de esto no es usar la orilla del mar (al menos no directamente) sino escribir versos transversales y otras cosas similares de una manera que sea más fácil que lanzar mis propios iteradores de seguimiento de estado.

¿Fue útil?

Solución

Normalmente, con Seaside, nunca tienes que lidiar con Continuaciones en absoluto.

Solo usa #call: y #answer: desde sus componentes.

Si está intentando hacer otra cosa con Continuation además de escribir una aplicación de Seaside, consulte WAComponent > > call: para ver un ejemplo de uso. .

O prueba esto. Abra una ventana de Transcripción. Ahora, en un Área de trabajo, seleccione todo este código a la vez y Hágalo:

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

Transcript show: result.

Debería ver 1 en la ventana Transcripción. Ahora, en el espacio de trabajo, haz:

continuation value: 2

y luego:

continuation value: 3

Debería ver cada valor que pasa a continuación en la Transcripción porque cada valor que pasa a #value: hace que se restaure el contexto de la continuación y el nuevo valor asignado a resultado .

Esperemos que eso ayude ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top