Используя этот код:Scala Тип возвращаемого 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' всегда будет возвращать то, что находится в параметрах, так как оно пустое –
@ ElectricCoffee это просто пример? Но более идиоматично: 'val kv = mutable.Map [Int, Double]()' или 'val kv = mutable.HashMap.empty [Int, Double]' –
@ som-snytt больше идиоматического будет не использовать изменчивые данные на самом деле, и используйте 'map', а не' foreach', чтобы собрать коллекцию, а не мутировать одну. –