Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 840
user293361 Avatar asked Mar 14 '10 11:03

user293361


2 Answers

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

like image 65
Ben James Avatar answered Oct 09 '22 23:10

Ben James


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.

like image 28
adamse Avatar answered Oct 09 '22 22:10

adamse