计算scala中的平均值

时间:2016-07-19 17:21:15

标签: scala

我从数据库获取了一个会话内容结果是哪个内容维度,现在我正在尝试计算维度的平均值:

sessionService.findById(sessionId).map {
  case Some(session) =>
    val result = session.result.getOrElse(Seq.empty)
    for (dimension <- result.dimensions) {
      var test += dimension.average
    }

    Ok(Json.toJson(session)).as("application/json")
  case None => NotFound(Json.toJson("Not found"))

}

但我收到此错误:enter image description here

更新:

尝试时

var test = 0
for (dimension <- result.dimensions) {
  test += dimension.average
}

我收到此错误:

enter image description here

1 个答案:

答案 0 :(得分:2)

var test += dimension.average

语法无效。你不能同时声明和增加一个变量......它只是没有意义。

你可能意味着像

var test = 0
for (dimension <- result.dimensions) {
  test += dimension.average
}

顺便问一下,您是否考虑过一种不同的,更具功能性的方法?

val test = result.dimensions.reduce(_ + _.average)

关于更新,问题出在getOrElse(Seq.empty)

您可以尝试类似

的内容
sessionService.findById(sessionId).map {

  case Some(Session(_, _, Some(result), _)) =>
    result.dimensions.reduce { case (avg, d) => avg + d.average }

  case None =>
    NotFound(Json.toJson("Not found"))

}