这有点让我感到困惑
以下代码编译好了:
def save: Action[AnyContent] = Action {
if (1 == 2) {
BadRequest(toJson("something went wrong"))
} else {
Ok(toJson(Feature.find))
}
}
Run Code Online (Sandbox Code Playgroud)
但如果我只是添加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"))
Run Code Online (Sandbox Code Playgroud)
我以为这两个代码是等价的......
BTW,Action是一个伴随对象,它有一个apply方法,它接收一个形式的函数:Request [AnyContent] => Result,并返回一个Action [AnyContent]
看起来像return语句,块返回直接执行BadRequest的结果...而且Ok ...而不是返回将块传递给Action对象伴侣的结果...
我对吗?
注意:我正试图找到摆脱这么多嵌套map和getOrElse的方法
ps:对不起,如果问题有点混乱,我很困惑自己......