6

下面的 Scala 代码正是我所期望的——它打印 some_file.txt 的每一行。

import scala.io.Source
val lines = Source.fromPath("some_file.txt").mkString
for (line <- lines) print(line)    

如果我使用 println 而不是 print,我希望看到 some_file.txt 以双倍间距打印出来。相反,程序在 some_file.txt 的每个字符后打印一个换行符。有人可以向我解释一下吗?我正在使用 Scala 2.8.0 Beta 1。

4

2 回答 2

23

lines是单个字符串,而不是一些可迭代的字符串容器。这是因为您.mkString在其上调用了该方法。

当您遍历一个字符串时,您一次只执行一个字符。所以linein yourfor 实际上不是一行,而是一个字符。

你可能打算做的是打电话.getLines而不是.mkString

于 2010-03-14T11:49:05.187 回答
2

我怀疑这for (line <- lines) print(line)并没有放入一条线,line而是一个字符。\n由于也存在,因此按预期进行输出。当您printprintln每个字符替换时,就会得到自己的行。

于 2010-03-14T11:53:43.290 回答