使用 Vavr 链接多个 Try 结果的简洁方法

Clean way to chain multiple Try results using Vavr

在我的项目中,我经常有一个模式,我在其中链接多个可能成功也可能不成功的方法。
我很难找到使用 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
                });
    }

一个优雅的解决方案是使用 vavr 的 for comprehension:

public Try<String> yetAnotherMainMethod(String someParam) {
   return API.For(firstOperation(), secondOperation(someParam), thirdOperation(someParam)).yield((s, s2, s3) -> s.concat(s2).concat(s3));
}