我试图计算scala中的平均值,这是我的函数平均值:
var p3 = List(Double)
for (dimension <- result.dimensions) {
p3 :+ dimension.average
}
println(average(p3))
这是我的代码:
{
"result" : {
"dimensions" : [{
"average" : 2.2
},
{
"average" : 4.2
}]
}
}
我的结构:
create_posttype()
答案 0 :(得分:1)
List(Double)
是一个包含一个元素的列表,它是Double
的所谓伴随对象。如果您想要一个Double
的空列表,则需要List[Double]()
(或更清晰,List.empty[Double]
)。然后,下一个错误是在p3 :+ dimension.average
中您创建了一个新的List
,然后对其执行任何操作。您可以使用p3 = p3 :+ dimension.average
来修复它,但这将是一种可怕的风格。
答案 1 :(得分:1)
空List
的初始化是错误的。请尝试以下方法:
var p3 = List[Double]()
除此之外,你可以用更容易,更惯用的方式实现同样的目标。一种方法是使用yield
:
val p3 = for (dimension <- result.dimensions) yield dimension.average
这与基本相同
val p3 = result.dimensions.map(_.average)
除此之外,您的平均功能有点复杂,只需执行val avg = list.sum/list.length
即可计算列表的平均值。