Scheme中的换行符(球拍)

Asq*_*qan 5 string scheme racket

当你用"显示"这样写时,可以有一个新行

(display "exa \n mple")
Run Code Online (Sandbox Code Playgroud)

但问题是没有任何代码在字符串中有新行?喜欢:

"exa \n mple" 
Run Code Online (Sandbox Code Playgroud)

预期 - >

exa
 mple
Run Code Online (Sandbox Code Playgroud)

是)我有的:

exa \n mple
Run Code Online (Sandbox Code Playgroud)

我在球拍文档或其他任何地方都找不到任何信息.

小智 8

就像是:

(display "line\nhola")
Run Code Online (Sandbox Code Playgroud)

应该这样做.

不知道为什么你需要上面发布的任何内容.


Ósc*_*pez 5

如果你需要一种在字符串之间添加换行符的方法,那么这将起作用:

(define s (string-append "exa " "\n" " mple"))
s
=> "exa \n mple"

(display s)
=> exa
    mple
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,我正在使用string-append中间的换行符将两个字符串粘在一起.生成的字符串s在您使用它时会有一个换行符,例如通过显示它.

显然它会显示为"exa \n mple",你不能指望字符串从一行跳到另一行,除非你显示它,打印它,显示它,写它等等.


小智 5

对于那些来到这里寻找如何做一些类似于 Javaprintln或 Python 的print在行尾添加换行符的事情的人来说,球拍有一个名为的函数displayln可以做到这一点。更复杂的类似 C 格式的打印可以在 Racket 中使用 完成fprintf,它看起来像一个 '~n' 被解释为换行符。

Racket 的许多打印功能都记录在此处:https : //docs.racket-lang.org/reference/Writing.html