我应该指定哪种函数类型AnyRef?
case class Fun() {
val anonFun: AnyRef = {
(x: Int) => x + 1
}
}
Run Code Online (Sandbox Code Playgroud)
我的通话代码:
val f = Fun()
val result = f.anonFun(1)
Run Code Online (Sandbox Code Playgroud)
PS
正如@jarandaf所说,这个特定功能的返回类型是Function1[Int, Int].但谁可以解释我为什么不Function1[Int]呢?
编译器能够推断出这一点.如果你想手动指定它(例如你正在编写某种公共API),你可以使用语法糖作为函数类型:
val anonFun : Int => Int = (x: Int) => x + 1
Run Code Online (Sandbox Code Playgroud)
较短的选择是:
val anonFun : Int => Int = _ + 1
Run Code Online (Sandbox Code Playgroud)
这实际上转换为一个Function1[Int,Int]实例.