Я немного озадачен этим
Следующий код компилируется нормально:
def save: Action[AnyContent] = Action {
if (1 == 2) {
BadRequest(toJson("something went wrong"))
} else {
Ok(toJson(Feature.find))
}
}
но если я просто добавлю оператор return, я получу следующее:
def save: Action[AnyContent] = Action {
if (1 == 2) {
return BadRequest(toJson("something went wrong"))
} else {
return Ok(toJson(Feature.find))
}
}
[error] found : play.api.mvc.SimpleResult[play.api.libs.json.JsValue]
[error] required: play.api.mvc.Action[play.api.mvc.AnyContent]
[error] return BadRequest(toJson("something went wrong"))
Я думал, что эти два кода будут эквивалентны...
Кстати, Action — это сопутствующий объект с методом применения, который получает функцию вида :Request[AnyContent] => Result и возвращает Action[AnyContent]
. Похоже, что с оператором return блок возвращает результат прямого выполнения BadRequest... и Ok... вместо возврата результата передачи блока компаньону объекта Action...
Я прав?
Примечание :Я пытаюсь найти способ избавиться от такого количества вложенных карт и getOrElse
ps :извините, если вопрос немного сумбурный, я сам запутался...