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.

114 6 Einsatz von Basis-Methoden<br />

Mehrere logische “Und”-Verknüpfungen<br />

Zur abkürzenden Beschreibung der Prüfung mehrerer logischer “Und”-Verknüpfungen<br />

läßt sich in bestimmten Fällen die Basis-Methode “inject:into:” verwenden.<br />

Durch diese Methode läßt sich prüfen, ob die Objekte eines Sammlers bestimmte<br />

Eigenschaften haben. Dabei ist der Sammler als Empfänger-Objekt der Message<br />

“inject:into:” aufzuführen. Als Argument des Selektors “inject:” ist ein Anfangswert<br />

und als Argument des Selektors “into:” ein Block anzugeben, für den zwei<br />

Block-Parameter vereinbart sind.<br />

ˆ “inject:into:”:<br />

Bei der Ausführung von “inject:into:” nimmt der 1. Block-Parameter zunächst<br />

den Wert an, der als Argument des Keyword-Selektors “inject:” aufgeführt ist.<br />

Für den 2. Block-Parameter wird ein erstes Objekt des Empfänger-Objektes<br />

eingesetzt.<br />

Im nächsten Schritt wird für den Wert des 1. Block-Parameters das Ergebnis-<br />

Objekt der letzten Block-Anforderung und für den 2. Block-Parameter ein<br />

weiteres Objekt des Empfänger-Objektes eingesetzt.<br />

Die Block-Anforderungen werden in dieser Form solange ausgeführt, bis alle<br />

Objekte des Empfänger-Objektes verarbeitet sind.<br />

Als Ergebnis-Objekt resultiert dasjenige Ergebnis-Objekt, das bei der zuletzt<br />

ausgeführten Block-Anforderung erhalten wird.<br />

Ist z.B. ein Bag durch die Anforderungen<br />

VarBag := Bag new.<br />

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

eingerichtet worden, so kann wie folgt geprüft werden, ob alle in ihm enthaltenen<br />

Objekte ungeradzahlig sind:<br />

VarBag inject: true into:<br />

[:pruefWert :einObjekt|pruefWert and: [einObjekt odd]]<br />

Als Ergebnis-Objekt der Message “inject:into:” ergibt sich die Pseudovariable “false”,<br />

weil z.B. die Zahl 32 nicht ungeradzahlig ist.<br />

6.3.5 Logische “Oder”-Verknüpfungen<br />

Soll z.B. geprüft werden, ob die Anzahl der in “WerteErfassung11” oder der in<br />

“WerteErfassung12” gesammelten Punktwerte größer als 3 ist, so läßt sich hierzu<br />

die Basis-Methode “or:” wie folgt verwenden:<br />

(WerteErfassung11 size > 3) or: [WerteErfassung12 size > 3]<br />

Bei der Methode “or:” handelt es sich ebenfalls um eine logische Basis-Methode, bei<br />

deren Aufruf ein logischer Block als Argument aufgeführt werden muß.<br />

ˆ “or:”, “.|.’’:<br />

Aus einer zusammengesetzten Bedingung der Form

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!