次のようなことをしたい: Transcript show: '\n'. どうやって?
4 に答える
以下を使用します。
Transcript cr
カスケード経由で値の後に使用できます。
Transcript show: 123; cr
私の (長い) 経験から、欠落している文字エスケープは、Smalltalk に欠落している数少ないものの 1 つです。ストリーミングの場合は、cr、tab などを使用したソリューションで問題ありません。
ただし、文字列に特定の制御文字が必要な場合、これは見苦しく読みにくい場合があります ("streamContents:" または "withCRs" を使用して newLine を追加します)。または、(非標準の) 文字列拡張メカニズムの 1 つを使用することもできます。たとえば、VisualWorks または Smalltalk/X では、次のように記述できます (私の記憶が正しければ)。
'someString with newline<n>and<t>tabs' expandMacros
または、他のオブジェクトのprintStringのprintfのようなスライスでも:
'anotherString<n><t>with newlines<n>and<t>tabs and<p>' expandMacrosWith:(Float pi)
SqueakやV'Ageにも似たようなものがあると思います。
ただし、注意してください。これらの展開は実行時に行われます。したがって、多くの文字列でそれらを頻繁に使用すると、ペナルティが発生する可能性があります。
文字自体は として到達できますCharacter cr
。したがって、これを行うこともできます:
Transcript show: 'Bla! , Character cr asString.
しかし、もちろん、
Transcript show: 'Bla!' ; cr.
はるかにエレガントです。
便宜上、String クラスにメソッド「line」を追加します。
line
^self, String lf
それからあなたはただ言うことができますobj showSomething: 'Hello world!' line.
または、改行、endl、lf などと呼びます...