【发布时间】:2014-09-01 06:30:45
【问题描述】:
我正在阅读Scala School。根据指南,地图可以包含类似的功能
def adder(x: Int, y:Int): Int = x + y
def add2(x:Int):Int = adder(2, x:Int)
val add3 = adder(3, _:Int)
val map = Map(
"adder" -> { adder(_, _) },
"add2" -> { add2(_) },
"add3" -> { add3(_) }
)
好的。上面的代码是编译好的。但是如何调用保存在地图中的函数呢?这些代码不起作用
map.get("adder")(2, 3) // compile error
val adderFunc: (Int, Int) => Int = map.get("adder") // compile error
Scala 编译器给出这个错误信息
[error] /home/user/scalaExample/src/test/scala/CollectionBasicsTest.scala:61: Option[Object] does not take parameters
[error] map.get("adder")(2, 3) // compile error
[error] ^
[error] /home/user/scalaExample/src/test/scala/CollectionBasicsTest.scala:62: type mismatch;
[error] found : Option[Object]
[error] required: (Int, Int) => Int
[error] val adderFunc: (Int, Int) => Int = map.get("adder") // compile error
【问题讨论】:
标签: scala collections map