java - Java8 if 语句替换为 try-catch 块中的 FP 概念
问题描述
有人可以告诉我一种用函数式编程概念替换 try 块中的 if 语句的方法。没有条件运算符,谢谢。
Predicate<Integer> isNegativeOrZero = i -> i <= 0;
try {
if (isNegativeOrZero.test(n)) throw new java.lang.Error("Negative number");
return process(n);
} catch(Error e) {
return STATE.ERROR;
}
替换这行代码:
if (isNegativeOrZero.test(n)) throw new java.lang.Error("Negative number");
解决方案
所以你想要以下?
return i <= 0 ? STATE.ERROR : process(n);
在这种情况下,您不会变得更简单,但您可以编写
return Optional.of(n)
.filter(i -> i > 0)
.map(i -> process(i))
.orElse(STATE.ERROR);
简而言之,您应该尽可能避免使用异常/错误,尤其是用于控制,但在函数式编程中,您需要删除它们,否则会很丑陋。
推荐阅读
- apache-spark - Kerberos:Spark UGI 凭据没有传递给 Hive
- c - 在 pthread 中使用结构时出现分段错误
- vue.js - 在 src 文件夹之外构建时出现 Vue js 问题
- javascript - 两个对象数组合并到另一个数组对象中
- php - 上一篇文章 ID 未使用此代码显示
- java - 为什么 Reactor 的 Mono.fromCompletionStage 比普通的 CompletableFuture 慢?
- ios - 如何在后台线程中访问 UIApplication 对象?
- reactjs - 如何在功能性 React JS 组件中获取数据?
- python - UFuncTypeError:ufunc 'clip' 不包含具有签名匹配类型的循环(dtype('
dtype(' cv2_imshow
使用from时出现错误google colab
。我试过的代码是:from google.colab.patches impor
- php - 如何让页面显示“.php”扩展名:在 html 中链接外部 php 文件