Я предполагаю, что это псевдокод, поскольку это сопоставление с образцом не является синтаксически правильным ...
Ваше сопоставление с образцом не является исчерпывающим. Например:
def test(): String = {
val x = Some(1)
x match {
case Some(y) if y == 2 => return "matched 1"
case _ if false == true => return "matched 2"
}
"matched nothing"
}
Приведенный выше код вернет "matched nothing"
, поскольку 1 != 2
и false != true
. Должен быть случай по умолчанию, в противном случае, если какое-либо из указанных условий не будет выполнено, он полностью проигнорирует сопоставление с шаблоном.
В вашем случае, я предполагаю, что ни одно из условий в вашем шаблонесоответствия встречаются. Следовательно, сопоставление с образцом пропускается и возвращается Ok(whatever)
- если вы уберете Ok
, ваше приложение взорвется, поскольку Action
должно вернуть Result
. Ваш код также вернет Ok
, если вы напишите его так:
def test = Action { implicit request =>
async {
await(userAuth.getAuth()) match{
case Some(userAuth) if <> =>
val url = <FunctionReturnsUrlwithcode>
Redirect(url)
case _ if flag =>
val url = <FunctionReturnsUrlwithcode>
Redirect(url)
case _ =>
Ok("Some message")
}
}
}
Кроме того,
Этот «Результат» может быть либо «ОК», либо «Перенаправление». "
Это не правда;это не ограничено только двумя значениями. Это может быть ряд других вещей, таких как NoContent
, Created
, BadRequest
, InternalServerError
и т. Д. (В основном любой действительный статус HTTP).