Scala println在for循环中

时间:2010-03-14 11:43:11

标签: scala printing println

以下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.

2 个答案:

答案 0 :(得分:23)

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

当您遍历字符串时,您一次只能执行一个字符。因此,line中的for实际上不是一行,而是单个字符。

您可能打算做的是致电.getLines而不是.mkString

答案 1 :(得分:2)

我怀疑for (line <- lines) print(line)没有在line中添加一行,而是一个字符。自\n以来,输出也符合预期。当您将print替换为println时,每个角色都会有自己的行。