当前位置: 首页 > 知识库问答 >
问题:

同时使用Vavr的“左”和“右”?

伍宝
2023-03-14

如何以功能性方式使用vavr的“左”或“右”?

我有一个方法,它返回一个

Either<RuntimeException, String> result = // get the result from somewhere

result.biConsumer(ex -> {
  reportFailure();
}, str -> {
  repportSuccess();
});

到目前为止,我找到的最接近的解决方法是biMap()方法,它看起来像

Either<RuntimeException, String> mappedResult = result.bimap(ex -> {
  reportFailure();
  return ex;
}, str -> {
  reportSuccess();
  return str;
});

可以说,映射函数应该用于映射而不是副作用,因此即使它有效,我也在寻找替代方案。

共有1个答案

楚和悌
2023-03-14

这里有peek和peekleet,两者结合在一起,非常接近你要找的东西。

void reportFailure(RuntimeException e) {
    System.out.println(e);
}
void reportSuccess(String value) {
    System.out.println(value);
}

....

// prints: some value
Either<RuntimeException, String> right = Either.right("some value");
right.peekLeft(this::reportFailure).peek(this::reportSuccess);

// prints: java.lang.RuntimeException: some error
Either<RuntimeException, String> left = Either.left(
    new RuntimeException("some error")
);
left.peekLeft(this::reportFailure).peek(this::reportSuccess);
 类似资料:
  • 对于我的API,我解析一个对象,并用lombok构建器创建我的对象。其中一个变量是LocalDateTime类型的“arrivalTime”,当然,它可以是null。 我以前是这样的: 但我正在寻找一种更好的方法,也许使用vavr选项?但我遇到了麻烦。我明白,如果逻辑不是空的,我就把它放入“map”中,如果逻辑是空的,我就把逻辑放入“get”中。但我不能得到(空)。如果arrivalTime为nu

  • Java 8 的对象函数式扩展,目标是减少代码行数,提高代码质量,提供了持久化集合、错误处理函数式抽象、模式匹配等等。 Vavr 融合了面向对象编程的强大功能,具有功能编程的优雅性和坚固性。 最有趣的部分是拥有功能丰富且持久的集合库,可以与 Java 的标准集合顺利集成。

  • 问题内容: 我有一个图块(或div)容器,我希望该容器居中,而图块在容器中对齐。 因此,如果窗口很小: 如果窗口扩大了一点: 进一步: 我试过了: 但这似乎不起作用。 我希望此功能至少可以在Chrome中运行,但最终还需要支持最新的FF,Safari和IE 10+ 问题答案: FWIW:现在是2017年,网格布局模块可以立即使用(codependemo)。如果浏览器支持适合您,请使用grid。如果

  • 我有一个包含3种方法的服务类,服务类也使用一些@Autowired注释。在3种方法中,我想模拟两种方法,但对第三种方法使用真实方法。 问题是: < li >如果我将@Autowired与@Spy一起使用,所有三个real方法实现都将被调用。 < li >如果我只使用@Spy,对real方法的调用返回空指针,因为没有自动连线对象的初始化。

  • 我担心如果在logging.properties中使用相同的文件,log4j和logging.properties可能会导致性能和正确性问题。否则,我将需要为那些不希望在我的情况下创建不同的文件。有没有干净的方法

  • 看起来在这个话题上有一些问题,但许多问题现在已经过时,或者问的是不同的问题。 例如,我想做 我不想在 我有一个方法签名,它同时接受请求参数和请求主体(它是Kotlin,但我不认为这实际上有什么不同)。 我可以很好地访问RequestParam,但是RequestBody包含的不仅仅是我在body中发送的JSON,它包含了body和请求参数的合并。在上面的示例中,它将为body绑定输出以下内容 有没