пытается запустить пример кода в книге Apress под названием «Начало Scala».Я даже скачал код с их сайта, чтобы убедиться, что я не обманываю.Получаем следующее сообщение:
/root/sum.scala:19: 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
и вот исходный код, который я использовал (работает под Scala версии 2.8.1.final (серверная виртуальная машина Java HotSpot (TM), Java 1.6.0_22 в Fedora 13)
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 (Unix/Mac) ctrl-C (Windows)")
val input = Source.fromInputStream(System.in)
val lines = input.getLines.collect
println("Sum "+sum(lines))
похоже, что это соответствующее изменение:
Метод Iterator.collect () в 2.7.7 возвращает Seq. В 2.8 он используется для выполнения условной картыиспользуя PartialFunction. Вместо этого вы можете использовать input.getLines.toSeq.