为什么这段Scala代码无法编译?

时间:2012-08-17 00:58:08

标签: scala

它产生的错误是:

Funct.scala:5: 'val' expected but identifier found.
[error] class Funct[In,Out](function: In => Out, description: String, implicit m: Manifest[In => Out]) {

并且有问题的代码是:

import scala.reflect.Manifest;

class Funct[In,Out](function: In => Out, description: String, implicit m: Manifest[In => Out]) {

  def isType[K](implicit man: Manifest[K]) = {
    m <:< man
  }

  def Apply(input: In): Out = {
    function.Apply(input)
  }

  def toString() = {
    description + m
  }
}

我根本看不出问题所在。

2 个答案:

答案 0 :(得分:7)

你应该弄清楚一些问题,但这个消息确实有点令人困惑。

此处的问题是implicit关键字必须标记整个参数组,而不仅仅是单个参数。试试:

class Funct[In,Out](function: In => Out, description: String)(implicit m: Manifest[In => Out])

答案 1 :(得分:3)

function.Apply(input)应为function.apply(input)function(input),但严重的是,只需使用IntelliJ或Eclipse,他们就会立即告诉您这些事情。