2010-06-05 3 views
0

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

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.") 

Scala жалуется fromFile ожидание type 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 

I угадал, что пытался ...

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

И это не помогло. Какой способ Scala 2.8 сделать работу getLines?

+0

http://stackoverflow.com/questions/2732487/error-with-default-argument-in-source-getlines-scala-2-8-0-rc1 –

+0

ах действительно, пропустил это при ответе –

ответ

4

Подпись getLines это:


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

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

Смежные вопросы