gpt4 book ai didi

string - Scala 原始字符串 : Extra tabs at the start of each line

转载 作者:行者123 更新时间:2023-12-02 06:47:13 24 4
gpt4 key购买 nike

我使用的是原始字符串,但是当我打印字符串时,我会在每行的开头获得额外的制表符。

val rawString = """here is some text
and now im on the next line
and this is the thrid line, and we're done"""

println(rawString)

这个输出

here is some text
and now im on the next line
and this is the thrid line, and we're done

我尝试设置不同的行结尾,但没有效果。我正在 Mac(OS X Tiger)上使用 jEdit 作为编辑器。当我在 scala 解释器中运行脚本或将输出写入文件时,我得到相同的结果。

有人知道这是怎么回事吗?

最佳答案

此问题是由于您在解释器中使用多行原始字符串所致。您可以看到,额外空格的宽度恰好等于 scala> 提示符的大小,或者解释器在创建新行时添加的管道 + 空格的大小,以保持行的排列向上。

scala> val rawString = """here is some text          // new line
| and now im on the next line // scala adds spaces
| and this is the thrid line, and we're done""" // to line things up
// note that the comments would be included in a raw string...
// they are here just to explain what happens

rawString: java.lang.String =
here is some text
and now im on the next line
and this is the thrid line, and we're done

// you can see that the string produced by the interpreter
// is aligned with the previous spacing, but without the pipe

如果您在 Scala 脚本中编写代码并将其作为 scala filename.scala 运行,您将不会获得额外的选项卡。

或者,您可以在解释器中使用以下构造:

val rawString = """|here is some text
|and now im on the next line
|and this is the thrid line, and we're done""".stripMargin

println(rawString)

stripMargin 的作用是删除原始字符串中每一行开头的 | 字符之前的所有内容(包括该字符)。

编辑:这是 known Scala bug -- 谢谢extempore :)

更新:已在 trunk 中修复。谢谢extempore再次:)。

希望有帮助:)

--弗拉维·西普西甘

关于string - Scala 原始字符串 : Extra tabs at the start of each line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com