以下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.
答案 0 :(得分:23)
lines
是单个字符串,而不是一些可迭代的字符串容器。这是因为您在其上调用了.mkString
方法。
当您遍历字符串时,您一次只能执行一个字符。因此,line
中的for
实际上不是一行,而是单个字符。
您可能打算做的是致电.getLines
而不是.mkString
答案 1 :(得分:2)
我怀疑for (line <- lines) print(line)
没有在line
中添加一行,而是一个字符。自\n
以来,输出也符合预期。当您将print
替换为println
时,每个角色都会有自己的行。