Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 找不到参数num的隐式值:Numeric[选项[Double]]_Scala - Fatal编程技术网

Scala 找不到参数num的隐式值:Numeric[选项[Double]]

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

我是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 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以从一些相同的值中获取值