2016-07-19 2 views
1

Я получаю сессию базы данных, содержание которых результат измерения содержания, сейчас я пытаюсь вычислить среднее значение для размеров:Вычислить среднее значение в Скале

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

UPDATE:

При попытке

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

я Тхи s ошибка:

enter image description here

ответ

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")) 

} 
+0

поблагодарить Вас за переигровку, пожалуйста, проверьте обновление – Rajeun

+0

также, что проблема с вашими данными. Каким должен быть размер? –

+0

вот структура моих данных http://pastebin.com/5edu4MHS – Rajeun

Смежные вопросы