gpt4 book ai didi

java - 也许 switchIfEmpty 惰性评估

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:06 31 4
gpt4 key购买 nike

如果源 Maybe 为空,我使用 Maybe switchIfEmpty 方法提供替代结果。但是,我希望仅在源为空时才执行备用源,而在源不为空时不执行它。

在下面的示例中,如果源返回非空 Maybe,我想避免执行 coSTLyFallback。当前的实现总是调用它,因为它需要传递给 switchIfEmpty 方法。 Maybe.fromCallable 看起来很有前途,但它只适用于不返回 Maybe.empty 的可调用对象。任何提示表示赞赏。如果 switchIfEmpty 接受一些延迟评估的 Maybe 提供商,那就太好了。

public class StartRxMaybe {

public static void main(String... args) {
System.out.println(new StartRxMaybe().start().blockingGet());
}

private Maybe<Integer> start() {
return func()
.switchIfEmpty(costlyFallback());
}

private Maybe<Integer> func() {
System.out.println("Non-empty maybe returned");
return Maybe.just(1);

}

private Maybe<Integer> costlyFallback() {
System.out.println("Fallback executed anyway");
return LocalDate.now().getMonth() == Month.JULY
? Maybe.just(2)
: Maybe.empty();
}
}

最佳答案

我想我找到了解决方案。使用Maybe.defer成功并允许通过供应商:

private Maybe<Integer> start() {
return func()
.switchIfEmpty(Maybe.defer(this::costlyFallback));
}

关于java - 也许 switchIfEmpty 惰性评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49906602/

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