有人能告诉我用函数式编程概念替换 try block 中的 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);
简而言之,您应该尽可能避免使用异常/错误,尤其是用于控制,但在函数式编程中,您需要删除它们,否则会很丑陋。
关于Java8 if 语句在 try-catch block 中替换为 FP 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52352275/