我编写了一个简短的函数来从多行字符串文字中去除前导空格并将这些行连接起来,就好像您写出了几个连接的字符串或一个非常长的字符串一样。
def stripMultiline(input : String) =
input.split("\n").map(_.dropWhile(_.isWhitespace).stripLineEnd).mkString
它按照我在 REPL 中所期望的方式工作:
scala> val longString =
| """
| one fish,
| two fish,
| red fish,
| blue fish
| """
scala> stripMultiline(longString)
res0: String = one fish, two fish, red fish, blue fish
但是,如果我将相同的代码放入一个main
方法并用 编译它scalac
,我会看到一些不同的东西:
package substitutions
object Main {
def stripMultiline(input : String) =
input.split("\n").map(_.dropWhile(_.isWhitespace).stripLineEnd).mkString
def main(args : Array[String]): Unit = {
val text =
"""
one fish,
two fish,
red fish,
blue fish
"""
val oneLine = stripMultiline(text)
println(oneLine)
}
}
(回到控制台)
C:\KC\code\scala\sub>scala substitutions.Main
blue fish
我正在Scala 2.10
为 REPL 和 Scalac 运行。我在 Windows 7 32 位和 64 位上看到了错误。谁能想到为什么这两个版本的行为不一样?它让我陷入了困境。这是我的逻辑问题,还是我应该提交错误报告?