我正在尝试创建一个具有键 - >函数调用映射的类,并且下面的代码不像我希望的那样工作。是否有可能在Scala中有{key - >函数调用}的地图?
class MyClass {
val rnd = scala.util.Random
def method1():Double = {
rnd.nextDouble
}
def method2():Double = {
rnd.nextDouble
}
def method3():Double = {
rnd.nextDouble
}
def method4():Double = {
rnd.nextDouble
}
def method5():Double = {
rnd.nextDouble
}
var m = Map[String,Double]()
m += {"key1"-> method1}
m += {"key2"-> method2}
m += {"key3"-> method3}
m += {"key4"-> method4}
m += {"key5"-> method5}
def computeValues(keyList:List[String]):Map[String,Double] = {
var map = Map[String,Double]()
keyList.foreach(factor => {
val value = m(factor)
map += {factor -> value}
})
map
}
}
object Test {
def main(args : Array[String]) {
val b = new MyClass
for(i<-0 until 3) {
val computedValues = b.computeValues(List("key1","key4"))
computedValues.foreach(element => println(element._2))
}
}
}
以下输出
0.022303440910331762
0.8557634244639081
0.022303440910331762
0.8557634244639081
0.022303440910331762
0.8557634244639081
表示一旦该函数被放置在地图,这是一个冷冻实例(每个键产生每一道次的相同的值)。我想看到的行为是,键将引用一个函数调用,产生一个新的随机值,而不是仅仅返回地图中的实例。
为什么有这么多相同的功能呢? – 2011-02-14 17:40:27
@Pablo。它们只是我将实际执行的功能的示例占位符。我希望有一个可以调用的潜在函数的全局,并且只调用它们的一个子集。 – 2011-02-14 17:44:14