Frage

Wie erhalte ich einen BlockClosure in Squeak (Ich will BlockClosure >> callcc verwenden)?

Wenn ich schreibe [#foo] das ist ein BlockContext, was ist das Problem?

Update:. Ich habe gearbeitet, dass BlockClosure eine Sache hauptsächlich aus neuen Compiler ist

Statt wie arbeite ich mit Meer Fortsetzungen? Ich habe Probleme, und alle Beispiele geschätzt würden.

Weitere Update: Der Zweck ist, nicht am Meer zu verwenden (zumindest nicht direkt), sondern Querungen und andere solche Dinge in einer Art und Weise zu schreiben, meine eigenen Stand Tracking einfacher als Roll Iteratoren ist

.
War es hilfreich?

Lösung

Normalerweise mit Meer, man muss überhaupt nicht mit Fortsetzungen selbst beschäftigen.

Sie haben soeben verwenden #call: und #answer: aus Ihren Komponenten.

Wenn Sie versuchen, andere etwas anderes mit Continuation zu tun, als eine Meer-Anwendung zu schreiben, werfen Sie einen Blick auf WAComponent>>call: für ein Beispiel der Nutzung.

Oder versuchen Sie dies. Öffnen Sie ein Transcript-Fenster. Nun, in einem Arbeitsbereich, wählen Sie alle diesen Codes auf einmal und Do-it:

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

Transcript show: result.

Sie sollten 1 im Transcript-Fenster angezeigt sehen. Jetzt, im Arbeitsbereich zu tun:

continuation value: 2

und dann:

continuation value: 3

Sie sollten jeden Wert sehen Sie im Transcript angezeigt continuation geben, da jeder Wert, den Sie #value passieren: bewirkt, dass der Rahmen der Fortsetzung zugewiesen gestellt und den neuen Wert werden, um result

.

Wir hoffen, das hilft ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top