Angenommen, wir die folgende Sequenz von Methoden haben:Was ist die Semantik der Rückkehr von Block innerhalb gesicherter Blöcke?
m1
self m2: [^1]
m2: block
self m3: block.
Processor := nil "crash!"
m3: block
[block value] ensure: [^2]
Die Frage ist, was der Wert von anObject m1
ist?
Mit anderen Worten, ist die Semantik von [ˆ2]
gut als ein gesicherter Block definiert? Es gibt zwei Möglichkeiten:
- Die Rückkehr aus dem Block in sicherten Blöcken ignoriert: In diesem Fall
m1
mit1
zurück. - Die Rückkehr von Block wird in gewährleisteten Blöcken geehrt: In diesem Fall wird das Bild abstürzen.
Bitte beachten Sie, dass ich nicht frage, was passieren wird. Ich bin eher an der Definition des Ausführungsflusses interessiert.
EDIT
FOLGE 1 (wie in seiner Antwort unten durch Lukas bestätigt): Kein guter Programmierstil!