2009-05-19 12 views

Antwort

9

Verwenden Sie die folgenden Schritte aus:

Transcript cr 

Sie es nach einem Wert über eine Kaskade verwenden können:

Transcript show: 123; cr 
4

Der Charakter selbst kann als Character cr erreicht werden. So können Sie auch dies tun:

Transcript show: 'Bla! , Character cr asString. 

Aber natürlich

Transcript show: 'Bla!' ; cr. 

ist viel eleganter.

+0

Zeichen cr asSymbol * und 'Bla!' <---- schließt es – Iancovici

4

Aus meiner (langen) Erfahrung sind fehlende Zeichen-Escapes eines der wenigen Dinge, die in Smalltalk fehlen. Für das Streaming sind Lösungen mit cr, tab etc. in Ordnung.

Wenn Sie jedoch ein bestimmtes Steuerzeichen in einer Zeichenfolge benötigen, kann dies hässlich und schwer zu lesen sein (mit "streamContents:" oder "withCRs" zum Hinzufügen einer neuen Zeile). Alternativ können Sie einen der (nicht standardmäßigen) String-Erweiterungsmechanismen verwenden. Zum Beispiel in Visual oder Smalltalk/X, können Sie schreiben (wenn ich mich richtig erinnere):

'someString with newline<n>and<t>tabs' expandMacros 

oder sogar mit printf ähnlichen Schneiden von anderem Objekt printStrings:

'anotherString<n><t>with newlines<n>and<t>tabs and<p>' expandMacrosWith:(Float pi) 

denke ich, es Ähnlich ist es auch in Squeak und V'Age.

Aber Achtung: Diese Erweiterungen werden zur Ausführungszeit durchgeführt. Sie können also eine Strafe erleiden, wenn Sie sie auf viele Strings anwenden.

+0

Der erste funktioniert in Pharo, der zweite verursacht einen Fehler, aber das kann ein Fehler sein; noch Untersuchung ... –

+0

Die Strafe kann gemildert werden, wenn Sie Ihre Absicht zum Ausdruck bringen, nur einmal mit ['someString mit newline und Tabs' expandMacros] einmal zu sehen Siehe [Wenn Sie zurückkommen] (http: //www.cincomsmalltalk. com/userblogs/travis/blogView? showComments = true & printTitle = Wenn_Sie_Come_Back & entry = 3346567529) –