Changes between Version 40 and Version 41 of squeak_faq
- Timestamp:
- 01/13/2014 11:10:51 AM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
squeak_faq
v40 v41 709 709 710 710 Leider muss man sich darum selbst kümmern, indem man die benötigten Tastencodes für jede Plattform herausfindet und dann anhand der Plattform, auf der die VM gerade läuft, entscheidet, welche Codes berücksichtigt werden sollen. Die Plattform kann man mit `Smalltalk os platformName` ermitteln (die Rückgabewerte sind z. B. `'mac os'`, `'Win32'` und `'unix'`). Eine Möglichkeit wäre, die Tastencodes auf der Klassenseite abzulegen und beim Zugriff darauf anhand der Plattform zu entscheiden, welcher der Codes zurückgegeben werden soll. Hier gibt es mehrere Varianten jeweils mit Vor- und Nachteilen (Plattform-Unterscheidung bei jedem Zugriff? Objekt mit aktuellen Codes anlegen? Wie sicherstellen, dass das richtige verwendet wird, wenn man das Image von einer Plattform zur anderen kopiert?). Überlegt, was sich für euer Projekt am besten eignet. 711 712 === Iterieren über Collections mit dem Collection-Protokoll === 713 Wichtig ist, auch für die Klausur, dass ihr nicht ausschließlich `#do:` verwendet, um zu iterieren. Nutzt unbedingt die Möglichkeiten des Collection-Protokolls. 714 {{{ 715 x := #(1 2 3 4 5). 716 b := x conform: [:a | (a >= 1) & (a <= 4)]. "test if all elements meet condition" 717 y := x select: [:a | a > 2]. "return collection of elements that pass test" 718 y := x reject: [:a | a < 2]. "return collection of elements that fail test" 719 y := x collect: [:a | a + a]. "transform each element for new collection" 720 y := x detect: [:a | a > 3] ifNone: []. "find position of first element that passes test" 721 sum := x inject: 10 into: [:a :c | a + c]. "sum of elements + 10" 722 sum := fold: [:x :y | x + y ] "sum elements" 723 }}} 724 Beispiele mehrheitlich aus [http://wiki.squeak.org/squeak/5699 Terse Guide to Squeak].