Frage zu BlockClosure in Squeak 4.1

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Frage zu BlockClosure in Squeak 4.1

R. Baumann
Die Exemplarvariablen ("inst vars") der Klasse BlockClosure sind outerContext, startpc und numArgs ("number of arguments").
Frage: Wovon ist startpc die Abkürzung und wie lässt sich die Funktion dieser Variablen kurz erläutern? (Danke.)

Leider hat Squeak 4.1 keinen Klassenkommentar. Die Version 3.9 hatte einen (zu BlockContext); der war allerdings nur für Experten / Entwickler verständlich.

R. Baumann
Reply | Threaded
Open this post in threaded view
|

Re: Frage zu BlockClosure in Squeak 4.1

Michael Haupt-3
Guten Tag,

2010/8/25 R. Baumann <[hidden email]>:
> Die Exemplarvariablen ("inst vars") der Klasse BlockClosure sind
> outerContext, startpc und numArgs ("number of arguments").
> Frage: Wovon ist startpc die Abkürzung und wie lässt sich die Funktion
> dieser Variablen kurz erläutern? (Danke.)

eine BlockClosure ist auch "nur" eine Methode mit Bytecodes, die zur
Ausführung gelangen. Blöcke sind syntaktisch Bestandteile von
Methoden. Die Bytecodes von Blöcken sind dann in der Regel in die
Bytecodes der Methoden eingebettet, deren Bestandteil sie sind.

startpc ist dann einfach der Bytecode-Index in besagter "äußerer"
Methode, an dem die Bytecodes des Blocks beginnen. Die Abkürzung steht
für "starting program counter" oder so ähnlich.

Viele Grüße,

Michael Haupt
Reply | Threaded
Open this post in threaded view
|

Re: Frage zu BlockClosure in Squeak 4.1

R. Baumann
Michael Haupt schrieb:

>> Blöcke sind syntaktisch Bestandteile von Methoden.

Trifft diese Aussage auch für den Fall zu, dass ein Block innerhalb des Workspace definiert und ausgeführt wird?

Worauf bezieht sich eigentlich das Wort "Closure"? Was wird hier "ab-" oder "eingeschlossen"?

Ist die Vorstellung richtig, dass ein BlockClosure-Objekt gewisse Daten (nämlich seine lokalen, temporären Variablen und die Blockparameter) "einschließt" ?

Danke für Erläuterungen.

R. Baumann
Reply | Threaded
Open this post in threaded view
|

Re: Frage zu BlockClosure in Squeak 4.1

Michael Haupt-3
Guten Abend,

2010/8/25 R. Baumann <[hidden email]>:
> Trifft diese Aussage auch für den Fall zu, dass ein Block innerhalb des
> Workspace definiert und ausgeführt wird?

ja, denn wenn man Code im Workspace markiert und ausführt, wird hinter
den Kulissen eine Methode daraus erzeugt.

> Worauf bezieht sich eigentlich das Wort "Closure"? Was wird hier "ab-" oder
> "eingeschlossen"?
>
> Ist die Vorstellung richtig, dass ein BlockClosure-Objekt gewisse Daten
> (nämlich seine lokalen, temporären Variablen und die Blockparameter)
> "einschließt" ?

Das kommt etwa hin; ich verweise an dieser Stelle der Einfachheit
halber auf http://de.wikipedia.org/wiki/Closure - die Erklärungen da
sind ganz ordentlich. :-)

Viele Grüße,

Michael Haupt