Чтение строк из примера кода в «Программирование в Scala» - PullRequest
0 голосов
/ 05 июня 2010

Работая с образцом в главе 3 «Программирование в Scala», следующий код не работает на Scala 2.8:

import scala.io.Source

if (args.length > 0) {
    for (line <- Source.fromFile(args(0)).getLines)
        print(line.length + " " + line)
}
else
    Console.err.println("Filename required.")

Скала жалуется fromFile ожидает типа java.io.File. После небольшого поиска кажется, что я должен использовать fromPath вместо ...

    for (line <- Source.fromPath(args(0)).getLines)

Однако теперь я получаю загадочную ошибку (в любом случае, для новичка):

... :4: error: missing arguments for method getLines in class Source;
follow this method with `_' if you want to treat it as a partially applied function
Error occurred in an application involving default arguments.
    for (line <- Source.fromPath(args(0)).getLines)
                                          ^
one error found

Я угадал, пытаясь ...

    for (line <- Source.fromPath(args(0)).getLines _)

И это не сработало. Как в Scala 2.8 заставить getLines работать?

1 Ответ

4 голосов
/ 05 июня 2010

Подпись getLines такова:


def getLines(separator: String = compat.Platform.EOL): Iterator[String] = new LineIterator(separator)

Так что у него есть аргумент по умолчанию. Вместо этого вам нужно написать getLines(), чтобы использовать это значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...