我还在学习 Javaslang/Vavr,所以请原谅我的无知。我正在从事的项目停留在Javaslang 2.1.0上。
我的问题:是否有一种更“功能性”的方式(与命令式风格相反)来构建我的代码以仅在成功后才加入多个尝试?
我想独立地尝试每个输入,其想法是获取尽可能多的错误信息——我不想在遇到的第一个错误上停下来(所以orElse()
等不会成功)。但是一旦不再发现错误,我想做一些进一步涉及所有输入的事情。
我当前的代码如下所示(适当匿名):
Try<BigDecimal> amountTry = Try.of(this::readNumber)
.map(BigDecimal::valueOf)
.onFailure(this::collectError);
Try<Currency> currencyTry = Try.of(this::readString)
.map(currency -> currencyLookup(Currency.class, currency))
.onFailure(this::collectError);
if (amountTry.isSuccess() && currencyTry.isSuccess()) {
sale.setAmount(Amount.of(amountTry.get(), currencyTry.get()));
}
你能建议一种模式来用if()
更多的函数式编程风格来代替吗?