【发布时间】:2018-02-03 10:46:11
【问题描述】:
鉴于这个简化的示例代码:
Flux.empty()
.cast(Integer.class)
.reduce(Integer.valueOf(1), (i,j) -> i+j)
.subscribe(System.out::println);
如何实现reduce操作的结果也是空的?
【问题讨论】:
标签: project-reactor
鉴于这个简化的示例代码:
Flux.empty()
.cast(Integer.class)
.reduce(Integer.valueOf(1), (i,j) -> i+j)
.subscribe(System.out::println);
如何实现reduce操作的结果也是空的?
【问题讨论】:
标签: project-reactor
你不能使用这个特定的变体。 Integer.valueOf(1) 的一半目的是提供一个种子,以确保即使源为空也有一个值。
但是,您可以在没有种子/种子供应商的情况下使用该变体:
Flux.empty()
.cast(Integer.class)
.reduce((i,j) -> i+j)
.subscribe(System.out::println);
空序列或单值序列将按原样复制(javadoc 可能对此有点不清楚),所以:
Mono。Flux.empty().cast(Integer.class) 替换为Flux.just(1) 会生成一个Mono,它会发出1。Flux.just(3, 4) 将产生一个Mono,它发出7
【讨论】: