fle*_*end 1 collections scala function
我正在为对象中的简单数据访问器构建枚举条目的映射.以下是使用Int作为关键字的示例(来自解释器):
class Obj(a: Int, b: Int) {
def getA = a
def getB = b
}
val m : Map[Int, (Obj) => Int] = Map(
(2, (o: Obj) => o.getA)
);
val d = m(2)(new Obj(3,4))
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是必须在每个映射值的参数中明确地使用:Obj类型编写函数似乎是不必要的:
(o: Obj) => o.getA
Run Code Online (Sandbox Code Playgroud)
是否有更严格的语法我错过了?
在这种情况下,将推断出类型,例如:
scala> val m : Map[Int, (Obj) => Int] = Map(
| (2, _.getA)
| )
m: Map[Int,Obj => Int] = Map(2 -> <function1>)
scala> m(2)( new Obj(3,4) )
res0: Int = 3
Run Code Online (Sandbox Code Playgroud)
在这里,我使用下划线使函数定义尽可能简洁,但您也可以将函数定义为:o => o.getA.如果参数被多次使用会很有用,例如:o => o.getA + o.getB.