我从数据库获取了一个会话内容结果是哪个内容维度,现在我正在尝试计算维度的平均值:
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"))
}
更新:
尝试时
var test = 0
for (dimension <- result.dimensions) {
test += dimension.average
}
我收到此错误:
答案 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"))
}