在“Scala编程”中从示例代码中读取行

时间:2010-06-05 03:53:37

标签: scala

通过“Scala编程”第3章中的示例,以下代码似乎不适用于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.")

Scala抱怨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 个答案:

答案 0 :(得分:4)

getLines的签名是这样的:


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

所以它有一个默认参数。您需要改为编写getLines(),以便使用此默认值。