Scala println in a for loop
The following Scala code does just what I expect it to - it prints each line of some_file.txt.
import scala.io.Source
val lines = Source.fromPath("some_file.txt").mkString
for (line <- lines) print(line)
If I use println instead of print, I expect to see开发者_运维问答 some_file.txt printed out with double-spacing. Instead, the program prints a newline after every character of some_file.txt. Could someone explain this to me? I'm using Scala 2.8.0 Beta 1.
lines
is a single string, not some iterable container of strings. This is because you called the .mkString
method on it.
When you iterate over a string, you do so one character at a time. So the line
in your for
is not actually a line, it's a single character.
What you probably intended to do was call .getLines
instead of .mkString
I suspect that for (line <- lines) print(line)
doesn't put a line in line
but instead a character. Making the output as expected since the \n
is there too. When you the replace the print
with println
every character gets its own line.
精彩评论