Ich möchte so etwas tun: Transcript show: '\ n'. Wie?neue Zeile in Quietschen
Antwort
Verwenden Sie die folgenden Schritte aus:
Transcript cr
Sie es nach einem Wert über eine Kaskade verwenden können:
Transcript show: 123; cr
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.
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.
Der erste funktioniert in Pharo, der zweite verursacht einen Fehler, aber das kann ein Fehler sein; noch Untersuchung ... –
Die Strafe kann gemildert werden, wenn Sie Ihre Absicht zum Ausdruck bringen, nur einmal mit ['someString mit newline
Zeichen cr asSymbol * und 'Bla!' <---- schließt es – Iancovici