Reputation: 721
I'm getting a session from database which content result which content dimensions, now I'm trying to calculate average for dimensions:
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"))
}
UPDATE :
When trying
var test = 0
for (dimension <- result.dimensions) {
test += dimension.average
}
I get this error:
Upvotes: 2
Views: 2381
Reputation: 108111
var test += dimension.average
is invalid syntax. You can't simultaneously declare and increase a variable... well it just doesn't make sense.
You probably meant something like
var test = 0
for (dimension <- result.dimensions) {
test += dimension.average
}
By the way, have you considered a different, more functional approach?
val test = result.dimensions.reduce(_ + _.average)
About the update, the problem is with getOrElse(Seq.empty)
You can try something like
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"))
}
Upvotes: 2