我应该指定哪种函数类型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]
?
答案 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 }