将元素添加到super scala时出现语法错误

将元素添加到super scala时出现语法错误,scala,map,super,traits,Scala,Map,Super,Traits,我在超级方法上有些麻烦。我需要在map中定义一个函数,它可以增加键值对中的值 trait AddOneToMap[K] extends Map[K,Long] { abstract override def get(key: K): Option[Long] = super.get(key) + 1.0} 但我犯了一个错误:类型不匹配 found : Double(1.0) required: String abstract override def get(key: K): Opt

我在超级方法上有些麻烦。我需要在map中定义一个函数,它可以增加键值对中的值

trait AddOneToMap[K] extends Map[K,Long] {

abstract override def get(key: K): Option[Long] = super.get(key) + 1.0}
但我犯了一个错误:类型不匹配

found   : Double(1.0)
 required: String
 abstract override def get(key: K): Option[Long] = super.get(key) + 1.0

如何解决这个问题^

让我们将函数扩展到:

def get(key: K): Option[Long] = {
  val x: Option[Long] = super.get(key)
  x + 1.0
}
现在很明显,您正在向
选项[Long]
添加一个
Double
。(您的意思是添加一个
Long
而不是
Double
?) 如果查找成功,您要做的是将1添加到查找中

下面是实现这一点的惯用方法:

def get(key: K): Option[Long] = super.get(key).map(_ + 1L)