scala: problemy z instrukcją return

Jestem tym trochę zdziwiony

Poniższy kod kompiluje się w porządku:

def save: Action[AnyContent] = Action {
  if (1 == 2) {
    BadRequest(toJson("something went wrong"))
  } else {
    Ok(toJson(Feature.find))
  }
}

ale jeśli dodam tylko instrukcję zwrotu, otrzymam następujące informacje:

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

Myślałem, że te dwa kody będą równoważne ...

BTW, Action jest obiektem towarzyszącym, z metodą stosowania, która otrzymuje funkcję postaci: Request [AnyContent] => Wynik, która zwraca akcję [AnyContent]

Wydaje się, że z instrukcją return blok zwraca wynik bezpośredniego wykonania BadRequest ... i Ok ... zamiast zwracać wynik przekazania bloku do towarzysza obiektu Action ...

Czy mam rację?

Uwaga: Próbuję znaleźć sposób na pozbycie się tak wielu zagnieżdżonych map i getOrElse

ps: przepraszam, jeśli pytanie jest trochę zmieszane, jestem zdezorientowany ...

questionAnswers(2)

yourAnswerToTheQuestion