Scala中此函数的类型是什么?

时间:2015-03-07 18:39:34

标签: scala

我应该指定哪种函数类型AnyRef

case class Fun() {
  val anonFun: AnyRef = { 
    (x: Int) => x + 1
  }
}

我的主叫代码:

val f = Fun()
val result = f.anonFun(1)

PS

正如@jarandaf所说,这个特定函数的返回类型是Function1[Int, Int]。但谁可以解释我为什么不Function1[Int]

2 个答案:

答案 0 :(得分:5)

编译器能够推断出这一点。如果你想手动指定它(例如你正在编写某种公共API),你可以使用语法糖作为函数类型:

val anonFun : Int => Int = (x: Int) => x + 1

较短的选项是:

val anonFun : Int => Int = _ + 1

这实际上转换为Function1[Int,Int]实例。

答案 1 :(得分:1)

该函数需要Int并返回Int,因此其类型为Int => Int

更有趣的实现,无需重复参数类型:

val anonFun: Int => Int = { _ + 1 }