6

我想做这样的事情:成绩单显示:'\ n'。如何?

4

4 回答 4

11

使用以下内容:

Transcript cr

您可以通过级联在值之后使用它:

Transcript show: 123; cr
于 2009-05-19T09:05:49.537 回答
4

字符本身可以通过Character cr. 所以,你也可以这样做:

Transcript show: 'Bla! , Character cr asString.

但是当然,

Transcript show: 'Bla!' ; cr.

更优雅。

于 2009-05-21T12:03:48.620 回答
4

根据我的(长期)经验,缺少字符转义是 Smalltalk 中缺少的少数内容之一。对于流媒体,使用 cr、tab 等的解决方案是可以的。

但是,如果您需要字符串中的特定控制字符,这可能很难看且难以阅读(使用“streamContents:”或“withCRs”添加新行)。或者,您可能希望使用一种(非标准)字符串扩展机制。例如,在 VisualWorks 或 Smalltalk/X 中,你可以这样写(如果我没记错的话):

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

甚至对其他对象的 printStrings 进行类似 printf 的切片:

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

我想,在 Squeak 和 V'Age 中也有类似的东西。

但是,请注意:这些扩展是在执行时完成的。因此,在许多字符串上大量使用它们时,您可能会遇到惩罚。

于 2011-05-11T07:38:25.680 回答
1

为了方便起见,我在 String 类中添加了一个方法“line”:

line
    ^self, String lf

然后你可以说obj showSomething: 'Hello world!' line.

或者称它为换行符、endl、lf 等...

于 2018-04-17T01:49:26.693 回答