react 解构后加入数组_项目React堆–解构元组

react 解构后加入数组

元组是简单的数据结构,其中包含一组固定的项目,每个项目具有不同的数据类型。

Project Reactor提供了可容纳大约8种不同类型的元组数据结构

元组非常有用,但是使用元组的问题之一是,要在不使用它们的每个位置对其进行结构分解的情况下,很难弄清它们的内容。

问题

考虑一个简单的运算符,该运算符以这种方式将字符串和整数压缩在一起:

 Mono<Tuple2<String, Integer>> tup = Mono.zip(Mono.just( "a" ), Mono.just( 2 )) 

输出是一个包含2个元素的元组。

现在,我的问题是这个。 我更喜欢在对其进行任何操作之前,将元组取消引用到其组成元素中。

用上一个元组说,我想生成与count(元组的第二个元素)一样多的字符串(元组的第一个元素),表示方式如下:

 Mono.zip(Mono.just( "a" ), Mono.just( 2 )) 
     .flatMapMany(tup -> { 
         return Flux.range( 1 , tup.getT2()).map(i -> tup.getT1() + i); 
     }) 

这里的问题是,当引用“ tup.getT1()”和“ tup.getT2()”时,还不清楚元组的含义。 虽然更冗长,但我更喜欢这样做:

 Mono.zip(Mono.just( "a" ), Mono.just( 2 )) 
     .flatMapMany(tup -> { 
         String s = tup.getT1(); 
         int count = tup.getT2(); 
         return Flux.range( 1 , count).map(i -> s + i); 
     }); 

将结构分解为具有有意义名称的显式变量的方法有效,但这有点冗长。 使用Project Reactor附带的一组实用程序功能提供了一种更好的方法
元组

我觉得最好用一个示例来说明,使用TupleUtils之前的解构看起来像这样:

 Mono.zip(Mono.just( "a" ), Mono.just( 2 )) 
     .flatMapMany(TupleUtils.function((s, count) -> 
             Flux.range( 1 , count).map(i -> s + i))) 

这看起来比显式解构更为简洁。 有点聪明,但需要一些习惯:

flatMapMany的签名是–

 public final <R> Flux<R> flatMapMany(Function<? super T,? extends Publisher<? extends R>> mapper) 

TupleUtils提供了另一个间接函数,它通过另一个函数返回上述所需的函数:

 public static <T1, T2, R> Function<Tuple2<T1, T2>, R> function(BiFunction<T1, T2, R> function) { 
     return tuple -> function.apply(tuple.getT1(), tuple.getT2());  } 

如果您使用的是Kotlin,则有一种更简单的方法。 这基于“销毁声明”的概念。 Project Reactor使用额外的gradle依赖项提供了一组Kotlin帮助器实用程序:

 implementation( "io.projectreactor.kotlin:reactor-kotlin-extensions" ) 

有了这种依赖关系后,等效的Kotlin代码如下所示:

 Mono.zip(Mono.just( "a" ), Mono.just( 2 )) 
     .flatMapMany { (s: String, count: Int) -> 
         Flux.range( 1 , count).map { i: Int -> s + i } Flux.range( , count).map { i: Int -> s + i } 
     } 

了解如何将元组直接分解为变量。 看起来是这样的:

 val (s: String, count: Int) = tup 

结论

将元组分解为更有意义的变量以提高代码的可读性非常重要,TupleUtils以及Kotlin扩展提供的有用功能有助于保持代码的简洁性和可读性。

Java示例在这里 ,Kotlin示例在这里

翻译自: https://www.javacodegeeks.com/2020/01/project-reactor-de-structuring-a-tuple.html

react 解构后加入数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值