2

私は、Beginning Scala book を読んでいる Scala の初心者で、例が機能していないようです。何度もチェックしましたが、コードがどこから逸脱しているかを見つけることができないようです。次のscalaファイルがあります。

import scala.io._

def toInt(in: String): Option[Int] =
  try {
    Some(Integer.parseInt(in.trim))
  } catch {
    case e: NumberFormatException => None
  }

def sum(in: Seq[String]) = {
  val ints = in.flatMap(s => toInt(s))
  ints.foldLeft(0)((a, b) => a + b)
}

println("Enter some numbers and press ctrl-D)")

val input = Source.fromInputStream(System.in)
val lines = input.getLines.collect

println("Sum "+sum(lines))

コマンドを使用して実行しようとするたびにScala sum.scala、次のエラーが発生します。

sum.scala:18: error missing arguments for method collect in trait Iterator:
follow this method with '_' if you want to treat it as a partially applied function
val lines = input.getLines.collect
                           ^
one error found

ここで私が間違っていることに誰かが光を当てることができますか?

4

1 に答える 1

2

正確に何を収集したいですか?各行の数値の合計を取得するために、コレクトコールを呼び出す必要はありません。

val lines = input.getLines.toList
println("Sum "+sum(lines))

または標準のscala関数を介して:

val numbers = input.getLines.map(line => line.trim.toInt)
println("Sum "+numbers.sum)
于 2012-10-31T16:50:43.423 に答える