--- Ursprüngliche Nachricht --- Von: Enrico Schwass deckard73@freenet.de An: Squeak in Germany / Squeak in Deutschland squeak-ev@lists.squeakfoundation.org Betreff: Re: [Squeak-ev] nicht druckbare Zeichen hat sich erledigt Datum: Wed, 14 Dec 2005 11:02:20 +0100
Aehm ... Ja
Hab gerade doch noch was gefunden. Character isSeparator. Das ist schon beinahe ausreichend. Waere es aber nicht eine gute Idee auch isNewLine oder isTab mit in die Klassenbibliothek aufzunehmen?
Zweifellos eine zweckmaessige Idee.
Aus anderen Sprachen kennt man Sonderbehandlung der ersten 32 ASCII Zeichen, wie Newline, Bell, Tab etc ueber "\n", "\t", "\b".
Wenn ich auf Newline, Linefeed oder Carriagereturn testen will kann ich das mit 10 und 13 loesen. Es gibt aber sicher vordefinierte "Konstanten", oder?
Ja, die gibt es. Sie stehen im pool dictionary TextConstants. Mit "TextConstants inspect" kann man sich einen Überblick verschaffen, welche Namen definiert sind.
Wie wende ich das an. Kann jemand mal 2 Zeilen Code posten? Ich habe im Netz nichts dazu gefunden.
Damit man die symbolischen Namen in einer Methode verwenden kann, muss man TextConstants in der Klassendefinition als pool dictionary angeben:
Object subclass: #MyDemoClass instanceVariableNames: '' classVariableNames: '' poolDictionaries: 'TextConstants' category: 'Demo'
Dann sind Ausdrücke wie
character = Tab.
string at: 1 put: Space.
compilierbar.
Leider ist TextConstants ein bißchen unvollständig, aber das kann man ändern. TextConstants ist ein normales Dictionary, man kann also z.B. schreiben:
TextConstants at: #Lf put: Character lf
Gruss Boris