2013-12-10 20 views
0

我使用超级方法时遇到了一些问题。我需要在map中定义一个函数,这可以增加键值对中的值。将语法错误添加到超级Scala中的元素

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

abstract override def get(key: K): Option[Long] = super.get(key) + 1.0} 

但我有错误:type mismatch;

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

如何解决这个问题?^

回答

2

让我们的功能扩展为:

def get(key: K): Option[Long] = { 
    val x: Option[Long] = super.get(key) 
    x + 1.0 
} 

现在很显然,要添加DoubleOption[Long]。 (你的意思是添加一个Long而不是一个Double?) 你想要做的就是加1到查找如果它成功

下面是做到这一点的习惯的方法:

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