03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

122 6 Einsatz von Basis-Methoden<br />

VarBag do: [:einBag|Transcript cr.<br />

einBag do: [:einObjekt|<br />

Transcript show: einObjekt printString]]<br />

anfordern.<br />

6.6.2 Die Basis-Methoden “collect:”, “select:” und “reject:”<br />

Mit der Basis-Methode “collect:” haben wir bereits im Abschnitt 6.2.3 eine Möglichkeit<br />

kennengelernt, mit der sich aus einem Sammler ein jeweils gleichartiger Sammler<br />

aufbauen läßt.<br />

Beim Einsatz der Message “collect:” ist zu beachten, daß der Sammler, aus dessen<br />

Objekten ein neuer Sammler aufgebaut werden soll, als Empfänger-Objekt und der<br />

Block, durch den der Aufbau des neuen Sammlers beschrieben wird, als Argument<br />

angegeben wird.<br />

ˆ “collect:”:<br />

Als Ergebnis-Objekt von “collect:” resultiert ein Sammler, der aus derselben<br />

Klasse wie das Empfänger-Objekt von “collect:” instanziiert ist. Er wird mit<br />

denjenigen Objekten gefüllt, die als Ergebnis-Objekte aus der wiederholten<br />

Ausführung des Blockes resultieren, der innerhalb der Message “collect:” als<br />

Argument aufgeführt ist.<br />

Sollen beim Aufbau eines neuen Sammlers nicht alle, sondern nur ausgewählte Objekte<br />

eines Sammlers übernommen werden, so können hierzu die Basis-Methoden<br />

“select:” und “reject:” verwendet werden.<br />

ˆ “select:”, “reject:”:<br />

Als Ergebnis-Objekt resultiert jeweils ein Sammler, der aus derjenigen Klasse<br />

instanziiert wird, aus der das Empfänger-Objekt der betreffenden Message<br />

instanziiert wurde.<br />

Als Argumente dieser Messages sind logische Blöcke zu verwenden, bei denen<br />

die jeweils letzte Block-Anforderung das Ergebnis-Objekt der Block-Ausführung<br />

in Form der Pseudovariablen “true” oder “false” ermittelt.<br />

Beim Einsatz von “select:” (“reject:”) werden alle die Objekte des Empfänger-<br />

Objektes gesammelt, für die die Ausführung des logischen Blockes den Wahrheitswert<br />

“true” (“false”) liefert.<br />

Zum Beispiel läßt sich aus dem durch<br />

VarBag := Bag new.<br />

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

eingerichteten Bag wie folgt ein neuer Bag aufbauen, der allein die ungeraden Zahlen<br />

enthält:<br />

VarBagNeu := VarBag select:[:eineZahl|eineZahl odd]

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!