使用此代码:斯卡拉返回类型missmatch
val kv: HashMap[Int, Double] = HashMap[Int, Double]()
val temp = valuesList.list.foreach { (id: Int, value: Option[Double]) =>
val kvValue: Double = kv.getOrElse(id, 0)
val nvValue: Double = value.getOrElse(0)
val nv = kvValue + nvValue
kv.put(id, nv)
}
我得到这个错误:
type mismatch;
found : (Int, Option[Double]) => Option[Double]
required: ((Int, Option[Double])) => ?
似乎无法找到解决办法......
如果声明为空,试图使用'kv'有什么意义? 'getOrElse'将始终返回参数中的内容,因为它是空的 – 2014-09-29 07:27:30
@ElectricCoffee这只是一个例子吗?但更习惯的是:'val kv = mutable.Map [Int,Double]()'或'val kv = mutable.HashMap.empty [Int,Double]' – 2014-09-29 16:43:51
@ som-snytt更习惯于不使用可变数据并且使用'map'而不是'foreach'来构建一个集合而不是改变其中的一个 – 2014-09-29 17:19:04