gpt4 book ai didi

java - 如何根据 Option 值获得 Either left/right

转载 作者:行者123 更新时间:2023-11-29 08:22:26 25 4
gpt4 key购买 nike

我试图根据选项值返回 Either 值。如果选项存在,我的目标是返回 Either.right() 否则,代码应返回 Either.left()。我使用 Java 8 和 vavr 0.9.2

我想避免条件重叠

public Either<String, Integer> doSomething() {
Optional<Integer> optionalInteger = Optional.of(Integer.MIN_VALUE);
Option<Integer> integerOption = Option.ofOptional(optionalInteger);

return integerOption.map(value -> {
//some other actions here
return Either.right(value);
}).orElse(() -> {
//some other checks her also
return Either.left("Error message");
});
}

编译器失败并显示此消息

Error:(58, 7) java: no suitable method found for orElse(()->Either[...]age"))
method io.vavr.control.Option.orElse(io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>) is not applicable
(argument mismatch; io.vavr.control.Option is not a functional interface
multiple non-overriding abstract methods found in interface io.vavr.control.Option)
method io.vavr.control.Option.orElse(java.util.function.Supplier<? extends io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>>) is not applicable
(argument mismatch; bad return type in lambda expression
no instance(s) of type variable(s) L,R exist so that io.vavr.control.Either<L,R> conforms to io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>)

最佳答案

orElse返回 Option<T>同时 doSomething返回类型需要 Either<String, Integer> .

相反,请尝试使用 getOrElse返回 T :

public Either<String, Integer> doSomething() {
// ...
return integerOption.map(
Either::<String, Integer>right).getOrElse(
() -> Either.left("Error message"));
}

关于java - 如何根据 Option 值获得 Either left/right,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com