03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.2 Einsatz von Blöcken 103<br />

Zum Beispiel ergibt sich aus der Ausführung von<br />

WerteErfassung11 bereitstellenWerte<br />

collect: [:einObjekt|einObjekt asInteger]<br />

ein Sammler in Form eines Bags, weil es sich beim Empfänger-Objekt von “collect:”<br />

um denjenigen Bag handelt, der der Instanz-Variablen “‘werteBag” zugeordnet ist.<br />

Jedes Objekt des Bags, der aus der Ausführung von<br />

WerteErfassung11 bereitstellenWerte<br />

resultiert, wird für den Block-Parameter “einObjekt” eingesetzt, so daß sich durch<br />

die Ausführung der Message “einObjekt asInteger” der ganzzahlige Wert der Zeichenkette<br />

ergibt. Diese Zahl wird in den Sammler aufgenommen, der als Ergebnis-<br />

Objekt erhalten wird.<br />

Die Ausführung der Methode “collect:” ist dann beendet, wenn alle Zeichenketten<br />

des durch die Anforderung “WerteErfassung11 bereitstellenWerte” bestimmten<br />

Sammlers bearbeitet wurden.<br />

Daß die Basis-Methode “collect:” in der angegebenen Form wirkt, liegt an ihrer<br />

Vereinbarung, die innerhalb der Basis-Klasse “Collection” in der folgenden Form<br />

vorliegt:<br />

collect: aBlock<br />

|answer|<br />

answer := self species new.<br />

self do: [:element|answer add: (aBlock value: element)].<br />

∧ answer<br />

Um die Ausführung von “collect:” – im Hinblick auf diese Methoden-Vereinbarung<br />

– zu beschreiben, betrachten wir die folgenden Anforderungen:<br />

VarBag := Bag new.<br />

VarBag add: ’32’; add: ’37’; add: ’37’; add: ’34’.<br />

VarBag collect: [:einObjekt|einObjekt asInteger]<br />

Hinweis: Sofern wir diese Anforderungen mittels der Menü-Option “Show It” des Menüs<br />

“Smalltalk” zur Ausführung bringen, erhalten wir z.B. “Bag(37 37 34 32)” als Ergebnis-<br />

Objekt angezeigt.<br />

Wird das Argument<br />

[:einObjekt|einObjekt asInteger]<br />

der Keyword-Message “collect:” für den Parameter “aBlock” der oben angegebenen<br />

Methode “collect:” eingesetzt, so ergibt sich die folgende Situation:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!