如何在 Pharo 中用新行编写字符串文字

how to write string literal with new lines in Pharo

如何在 Pharo 9 中编写带有换行符的字符串文字?我尝试了以下但他们都没有插入新行:

a := 'paragraph1\n\nparagraph2'.
a := 'paragraph1\n\nparagraph2'.

我能看到的唯一方法是像这样通过连接:

a := 'paragraph' , 
     (String with: Character cr with: Character cr),
     'new paragraph' , 
     (String with: Character cr with: Character cr)

有没有更简单(更短)的方法来做到这一点?

你只管做你的台词:

multiLineString := 'paragraph1
paragraph2
paragraph3'.

Pharo(与任何其他 Smalltalk AFAIK 一样)具有多行字符串,您不需要任何特殊符号,如 Python 或其他符号。

编辑:请注意,虽然 my 示例将是文字,但您的示例不会(那里将有 2 个文字,结果字符串将不是文字。
编辑 2:还有 String cr.
编辑 3:它也可以用流构造:

myMultiLineString := String streamContents: [ :stream |
    stream 
        nextPutAll: 'paragraph1'; cr;
        nextPutAll: 'paragraph2'; cr ]

您可以在字符串中使用 <n> 占位符并向其发送 expandMacros 消息 - 这会将占位符扩展为平台行分隔符:

a := 'paragraph1<n>paragraph2' expandMacros.

expandMacros 及其变体也接受制表符、cr、lf 和参数的占位符。有关详细信息,请参阅 String>>expandMacrosWithArguments: 的评论。