我尝试使用默认值创建ParHashMap,但在使用scalac编译时,我收到以下错误。
vmath.scala:41:错误:类型不匹配;发现: scala.collection.parallel.immutable.ParMap [String,Double]必需: scala.collection.immutable.Map [字符串,双] 新的FreqVec(值) ^ vmath.scala:8:错误:值withDefault不是scala.collection.parallel.immutable.ParMap [String,Double]的成员
var vals = values.par.withDefault(k => 0.0)
我讨厌要求你为我调试这个,但是我很困惑,因为我已经成功地使用其他地图(可变且不并行)而没有编译错误,并且scala文档说该函数确实存在{{3 }}
以下是我的代码简介
package vmath
import collection.immutable.Map
import collection.parallel.immutable.ParMap
class FreqVec(val values: Map[String, Double]) {
var vals = values.par.withDefault(k => 0.0)
...
}
object FreqVec {
def apply(values: Map[String, Double]) = {
new FreqVec(values)
}
def apply(values: ParMap[String, Double]) = {
new FreqVec(values)
}
}
提前谢谢。
答案 0 :(得分:1)
编译器错误#1告诉您正在尝试传递期望Map的ParMap。我没有看到withDefault缺失错误。确保您没有使用不支持它的旧版本的scala编译器。
以下是使用scala 2.11.0编译的代码版本。
class FreqVec(val values: Map[String, Double]) {
var vals: ParMap[String, Double] = values.par.withDefault(k => 0.0)
}
class FreqParVec(val values: ParMap[String, Double]) {
var vals: ParMap[String, Double] = values.withDefault(k=>0.0)
var valsWithPar: ParMap[String, Double] = values.par.withDefault(k=>0.0)
}
object FreqVec {
def apply(values: Map[String, Double]) = {
new FreqVec(values)
}
}
object FreqParVec {
def apply(values: ParMap[String, Double]) = {
new FreqParVec(values)
}
}