我在以下经过身份验证的流程中使用的Scala代码段中看到了一种奇怪的不可预测的行为:
case Some(token) if (token.isValid && !token.isExpired) => {
// do something
return Future
}
case Some(token) => {
// do something
return Future
}
我预计始终只会执行其中一个案例条件但不会同时执行。但有时候我发现它们都按照它们出现的顺序执行。 是因为我假设在Scala中的每个案例表达式之后没有隐含的“中断”吗?请注意,在两种情况表达式中,我正在访问数据库并返回未来的结果。