Scala 找不到参数num的隐式值:Numeric[选项[Double]]
我是Scala的新手,正在努力掌握这个选项。我正在努力 根据字符串键对以下列表中的双值成员求和:Scala 找不到参数num的隐式值:Numeric[选项[Double]],scala,Scala,我是Scala的新手,正在努力掌握这个选项。我正在努力 根据字符串键对以下列表中的双值成员求和: val chmembers = List(("Db",0.1574), ("C",1.003), ("Db",15.4756), ("D",0.003), ("Bb",1.4278), ("D",13.0001)) 总结如下: List((D,13.0031), (Db,15.633000000000001), (C,1.003), (Bb,1.4278)) 我现在的代码是 def getCla
val chmembers = List(("Db",0.1574), ("C",1.003), ("Db",15.4756), ("D",0.003), ("Bb",1.4278), ("D",13.0001))
总结如下:
List((D,13.0031), (Db,15.633000000000001), (C,1.003), (Bb,1.4278))
我现在的代码是
def getClassWeights: List[(Option[String], Option[Double])] = {
chMembers.flatMap(p => Map(p.name -> p.weight))
.groupBy(_._1).mapValues(_.map(_._2)sum).toList
}
但是,这不会编译并返回:
'找不到参数num的隐式值:
数字[选项[双精度]]。
我不明白“数字”是从哪里来的,也不知道如何处理它
如有任何建议,我将不胜感激。提前感谢。您可以这样做:
val chmembers = List(("Db",0.1574), ("C",1.003), ("Db",15.4756), ("D",0.003), ("Bb",1.4278), ("D",13.0001))
chmembers.groupBy(_._1).mapValues(_.map(_._2).sum)
输出
//Map(D -> 13.0031, Db -> 15.633000000000001, C -> 1.003, Bb -> 1.4278)
用于执行求和。它是一个类型类,为Int
、Float
、Double
等实现一些常见的数字操作
我不确定您为什么要使用选项
,我认为它不会帮助您解决问题。您的代码可以简化为:
val chmembers = List(("Db",0.1574), ("C",1.003), ("Db",15.4756), ("D",0.003), ("Bb",1.4278), ("D",13.0001))
def getClassWeights: List[(String, Double)] = {
chmembers.groupBy(_._1).mapValues(_.map(_._2).sum).toList
}
为什么要返回
选项[\u]
?什么条件应该创建None
值?感谢您的回答。但是,我希望能够处理的是选项参数。这就是编译问题所在…您可以首先展平列表,它将从选项中删除所有“无”,并在选择groupBy时使用u._1.get以从一些相同的值中获取值