Scala代码 - 错误:缺少参数类型错误

时间:2012-08-10 11:48:56

标签: scala

此代码有什么问题?

object Numbers extends App {

  def decode(number: Int) : String = number match {
    case _ if _ % 15==0 => "fizzbuzz"
    case _ if _ % 3==0 => "fizz"
    case _ if _ % 5==0 => "buzz"
    case _ => _.toString
  }

  val test = List(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
  test.map(decode).foreach(println)
}

我收到以下错误:

error: missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: String
case _ if _%15==0 => "fizzbuzz"

为什么编译器不知道参数类型? 感谢

1 个答案:

答案 0 :(得分:7)

(_ % 15 == 0)已扩展为函数(x: ?) => x % 15 == 0。其他if支票也是如此 编译器无法推断它,因为它没有关于参数的信息,它是一个与case _中的前一个下划线无关的新名称。因此,您不能在那里使用下划线来引用匹配的名称,您必须为其指定一个名称,如case x if x % 15 == 0