有人可以告诉我一种用功能编程概念替换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");
答案 0 :(得分:3)
所以你想要以下吗?
return i <= 0 ? STATE.ERROR : process(n);
在这种情况下,您将不会更简单,但是您可以编写
return Optional.of(n)
.filter(i -> i > 0)
.map(i -> process(i))
.orElse(STATE.ERROR);
简而言之,在可能的情况下,应避免使用异常/错误进行控制,但是在功能编程中,您需要将其删除,否则将很丑陋。