【发布时间】:2021-06-25 15:48:22
【问题描述】:
在我的项目中,我经常有一个模式,我将多个方法链接起来,这些方法可能会成功也可能不会成功。
我很难找到使用 Vavr 实现它的最干净的方法。
除了这两种方法,还有其他方法吗?
最好是不需要我创建不必要的 lambda,我什至不使用传递的变量。
// First way to do it: use flatMap to chain it
public Try<String> mainMethod(String someParam) {
return firstOperation()
.flatMap(v -> secondOperation(someParam))
.flatMap(v -> thirdOperation(someParam));
}
// Second way to do it: pattern matching
public Try<String> otherMainMethod(String someParam) {
Try<String> firstResult = firstOperation();
return Match(firstResult)
.of(
Case(
$Success($()),
() -> {
Try<String> secondResult = secondOperation(someParam);
return Match(secondResult)
.of(
Case($Success($()), thirdOperation(someParam)),
Case($Failure($()), secondResult));
}),
Case($Failure($()), firstResult));
}
private Try<String> firstOperation() {
return Try.of(
() -> {
// do something
});
}
private Try<String> secondOperation(String someParam) {
return Try.of(
() -> {
// Try something
});
}
private Try<String> thirdOperation(String someParam) {
return Try.of(
() -> {
// Try something
});
}
【问题讨论】:
标签: java functional-programming vavr