Scala println в течение цикла - PullRequest
6 голосов
/ 14 марта 2010

Следующий код 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 ]

23 голосов
/ 14 марта 2010

lines - это отдельная строка, а не какой-то итерационный контейнер строк. Это потому, что вы вызвали метод .mkString для него.

Когда вы перебираете строку, вы делаете это по одному символу за раз. Таким образом, line в вашем for на самом деле не строка, а один символ.

То, что вы, вероятно, намеревались сделать, это позвонить .getLines вместо .mkString

2 голосов
/ 14 марта 2010

Я подозреваю, что for (line <- lines) print(line) ставит не строку в line, а вместо символа. Делаем вывод, как и ожидалось, так как \n тоже есть. Когда вы заменяете print на println, каждый персонаж получает свою собственную строку.

...