Вопрос

Как получить BlockClosure в Squeak (я хочу использовать BlockClosure > > callCC)?

Когда я пишу [#foo], который является BlockContext, в чем дело?

Обновление: я выяснил, что BlockClosure - это в основном новый компилятор.

Вместо этого, как мне работать с Приморскими Продолжениями? У меня проблемы, и любые примеры будут оценены.

Дальнейшее обновление: цель этого состоит не в том, чтобы использовать побережье (по крайней мере, не напрямую), а в том, чтобы писать обходы и другие подобные вещи так, чтобы это было проще, чем использовать собственные итераторы для отслеживания состояния.

Это было полезно?

Решение

Обычно в Seaside вам никогда не приходится иметь дело с Continuations самостоятельно.

Вы просто используете #call: и #answer: внутри своих компонентов.

Если вы пытаетесь сделать что-то еще с Continuation , кроме написания приложения Seaside, посмотрите на WAComponent > > call: для примера использования .

Или попробуйте это. Откройте окно Transcript. Теперь в рабочей области выделите весь этот код сразу и выполните его:

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

Transcript show: result.

Вы должны увидеть 1 в окне Transcript. Теперь в рабочей области выполните:

continuation value: 2

а затем:

continuation value: 3

Вы должны увидеть, что каждое значение, которое вы передаете в продолжение , отображается в стенограмме, потому что каждое значение, которое вы передаете в #value: вызывает восстановление контекста продолжения и новое значение, назначенное для результат .

Надеюсь, это поможет ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top