scala :проблемы с оператором return

Я немного озадачен этим

Следующий код компилируется нормально:

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 :извините, если вопрос немного сумбурный, я сам запутался...

13
задан opensas 13 August 2012 в 06:57
поделиться