鉴于来自项目反应堆的Flux
或Mono
,有一种方法可以让Flux或Mono打印出运营商链的样子。例如,给出下面的代码。
Fulx flux = Flux.just("a","b","c")
.map( v -> v.toUpperCase())
.log();
有没有办法让助焊剂打印出处理管道中链接的所有运算符的列表?一些漂亮的ascii格式文本或大理石图?
printTheFlux(flux)应该是一个很好的打印输出,显示上面例子中所有操作符的结构。我不希望在lambda中生成代码只是一种方法来查看操作符链接在一起。
答案 0 :(得分:0)
很好的建议!
然而,等待它,我们可以有类似的东西:
shuffle(a_list_of_b_values)
for i in range(240):
if df.loc[i,'SorD'] == 'S':
df.loc[i,'N'] = 24
df.loc[i,'Size'] = 24
df.loc[i,'Space'] = 24
elif d.loc[i, 'SorD'] == 'D':
data = a_list_of_b_values.pop()
df.loc[i,'N'] = data['N']
df.loc[i,'Size'] = data['Size']
df.loc[i,'Space'] = data['Space']
Disposable flux = Flux.just("a", "b", "c")
.map(String::toUpperCase)
.doOnNext(FluxUtil::print)
.subscribe();
只是一种静态方法,您可以用不同的方式编写。
以下是完整代码适用于我:
FluxUtil::print
答案 1 :(得分:0)
使用Scannable
界面执行此操作有部分构建块:
public String textRepresentation(Flux<?> flux) {
Scannable sc = Scannable.from(flux);
//scan the last operator in the chain and ask if it knows its parents
List<String> names = sc.parents().map(Scannable::operatorName)
.collect(Collectors.toList());
//as it traverses the chain from bottom to top, we need to reverse the order
Collections.reverse(names);
//need to also add the last operator
names.add(sc.operatorName());
return names.toString();
}
@Test
public void textRepresentationTest() {
Flux flux = Flux.just("a","b","c")
.map( v -> v.toUpperCase())
.log();
System.out.println(textRepresentation(flux));
}
打印
[map, log]
并非所有运营商都完全支持它(如您所见,just
来源并非如此)。