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 ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage