scala: probleme mit der return aussage
Ich bin ein wenig verwirrt darüber
Der folgende Code wird in Ordnung kompiliert:
def save: Action[AnyContent] = Action {
if (1 == 2) {
BadRequest(toJson("something went wrong"))
} else {
Ok(toJson(Feature.find))
}
}
Wenn ich aber nur die return-Anweisung hinzufüge, erhalte ich Folgendes:
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"))
Ich dachte, diese beiden Codes wären gleichwertig ...
Übrigens ist Action ein Begleitobjekt mit einer Methode apply, die eine Funktion der folgenden Form empfängt: Request [AnyContent] => Result und die eine Action [AnyContent] zurückgibt.
Bei der return-Anweisung scheint der Block das Ergebnis der direkten Ausführung von BadRequest ... und Ok ... zurückzugeben, anstatt das Ergebnis der Übergabe des Blocks an den Action-Objekt-Begleiter ...
Habe ich recht?
Hinweis: Ich versuche einen Weg zu finden, um so viele verschachtelte Maps und getOrElse loszuwerden
ps: sorry wenn die frage ein wenig verwirrt ist bin ich selbst verwirrt ...