2010-06-05 5 views
0

de travail à travers un échantillon dans le chapitre 3 de « Programmation en Scala », le code suivant ne semble pas travailler sur Scala 2.8:lignes de lecture de code dans l'échantillon «Programmation en 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 se plaint fromFile attend le type java.io.File. Avec un peu de recherche, il semble que je devrais utiliser à la place fromPath ...

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

Cependant, je reçois maintenant une erreur déroutante de cette (déroutante pour un débutant de toute façon):

... :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 a pris une estimation à essayer ...

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

Et cela n'a pas fonctionné. Quelle est la façon Scala 2.8 de faire getLines de travail?

+0

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

+0

ah en effet, raté celui-là en répondant –

Répondre

4

La signature de getLines est la suivante:


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

Il a un argument par défaut. Vous devez écrire getLines() à la place, de sorte que cette valeur par défaut sera utilisée.

Questions connexes