私はこれに少し困惑しています
次のコードは正常にコンパイルされます。
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"))
この2つのコードは同等だと思いました...
ところで、Action はコンパニオン オブジェクトであり、Request[AnyContent] => Result という形式の関数を受け取る apply メソッドを持ち、Action[AnyContent] を返します。
return ステートメントのように見えますが、ブロックは、アクション オブジェクトのコンパニオンにブロックを渡した結果を返すのではなく、BadRequest を直接実行した結果を返しています... および Ok...
私は正しいですか?
注: 非常に多くのネストされたマップと getOrElse を取り除く方法を見つけようとしています。
ps:質問が少し混乱している場合は申し訳ありません。私は混乱しています...