Scala println в для цикла

Следующий код Scala делает, к чему я ожидаю это - это печатает каждую строку some_file.txt.

import scala.io.Source
val lines = Source.fromPath("some_file.txt").mkString
for (line <- lines) print(line)    

Если я буду использовать println вместо печати, то я ожидаю видеть some_file.txt, распечатанный с двойным интервалом. Вместо этого программа печатает новую строку после каждого символа some_file.txt. Кто-то мог объяснить это мне? Я использую Scala 2.8.0 Бет 1.

6
задан user293361 14 March 2010 в 11:43
поделиться

2 ответа

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

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

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

23
ответ дан 8 December 2019 в 04:29
поделиться

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

2
ответ дан 8 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: