6

次のようなことをしたい: Transcript show: '\n'. どうやって?

4

4 に答える 4

11

以下を使用します。

Transcript cr

カスケード経由で値の後に使用できます。

Transcript show: 123; cr
于 2009-05-19T09:05:49.537 に答える
4

私の (長い) 経験から、欠落している文字エスケープは、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にも似たようなものがあると思います。

ただし、注意してください。これらの展開は実行時に行われます。したがって、多くの文字列でそれらを頻繁に使用すると、ペナルティが発生する可能性があります。

于 2011-05-11T07:38:25.680 に答える
4

文字自体は として到達できますCharacter cr。したがって、これを行うこともできます:

Transcript show: 'Bla! , Character cr asString.

しかし、もちろん、

Transcript show: 'Bla!' ; cr.

はるかにエレガントです。

于 2009-05-21T12:03:48.620 に答える
1

便宜上、String クラスにメソッド「line」を追加します。

line
    ^self, String lf

それからあなたはただ言うことができますobj showSomething: 'Hello world!' line.

または、改行、endl、lf などと呼びます...

于 2018-04-17T01:49:26.693 に答える