【发布时间】:2016-12-14 12:06:15
【问题描述】:
我现在正在学习 Scala。我喜欢做的一件事是提前返回。我相信这对每个人来说都更容易阅读,因为我们之前只是删除了无效状态。现在,由于 Scala 是一种函数式语言,而且我已经读到切割计算是不好的函数式风格,我想知道是否有一些技巧或函数式编程相当于提前返回。
这是我要写的代码,完全清楚,这只是一个愚蠢的例子,我不是在寻找我的特殊情况的特殊黑客,而是更多关于如何处理这些的一般建议。
if (request.headers.get(session_header).isEmpty) {
BadRequest(session_not_set)
} else {
Ok(CartHelper.getCart(session, user))
}
现在,我想做的是:
if (request.headers.get(session_header).isEmpty) {
BadRequest(session_not_set)
return;
}
Ok(CartHelper.getCart(session,user))
如果你对我有任何提示!
【问题讨论】:
-
您遇到的错误是因为您试图在匿名函数中使用
return(在 PlayAction中),它从整个方法而不是匿名函数返回。在这种情况下,不可能做你想做的事,但我也鼓励你阅读上面的文章,因为提前返回不是好的做法。 -
当用
if ... else ...替换它时,通常会使用提前返回,最终会出现大小差异很大的子句。简单的解决方案是将较大的移到单独的方法中。 -
只是为了复制:正如我在我的帖子中解释的那样,这只是一个愚蠢的例子,它与游戏无关,它是一个一般的如何或更多不提前返回 Scala/Functional编程
标签: scala functional-programming