Groovy Tip 15 “*”操作符

                           Groovy Tip 15 *”操作符
 
 
基于 Groovy 语言是一个敏捷的开发语言的观点,它在很多方面给我们提供编码的方便和高效性。“ * ”操作符便是其中的一个例子,它被淹没在 Groovy 语言的很多高效特性中,不为人轻易所知,但这却恰恰说明 Groovy 语言编程的敏捷性。下面,我们就来说一说“ * ”操作符。
先从一个简单的例子说起。
假设我们有如下的一个方法:
    def static int sum( int i, int j, int k)
    {
       return i+j+k
}
 
 
现在,我们要调用这个方法。常规的调用如下:
     
     sum( 1 , 2 , 3 )
 
通过“ * ”操作符,我们可以这样调用:
      def list = [ 1 , 3 ]
     
      println sum(*list)
 
我们再把例子复杂一点:
   
    def static int cal( int i, int k,list)
    {
       return i+j+k+list. size ()
    }
 
要调用上面的方法,我们可以:
      def list = [ 1 , 3 ]
     
  println cal(*list,[ 1 , 7 ])
 
 
由于 Groovy 的动态性,我们甚至可以:
      def list = [ 1 , 3 , 3 ]]
 
    println cal(*list)
 
总之,有了“ * ”操作符,我们的多参数方法调用在写代码方面可以不用那么难受,可以先把所有的或部分的参数放在一个 List 对象里,然后把该对象传给方法。
除此之外,“ * ”操作符还有很多其他方面的用途,比如简化集合类的操作。下面也试图列举一些例子来说明。
我们现在有了一个 List 对象,如下 :
     
      def list1 = [ 1 , 3 ]
 
现在,我们需要一个新的 List 对象,它的元素部分由 list1 的元素组成。要实现这个目的,我们在 Java 语言的思路是这样的:
      def list2 = []
     list2.addAll(list1)
 list2<< 4
 
首先是要初始化一个新的 List 对象,然后使用 addAll 方法把 list1 的所有元素都赋给 list2 ,然后再在 list2 中添加新的元素。
当然,在 Java 语言中,我们还有更简单的办法,这就是 clone 方法,如下:
       def list2 = list1.clone()
       list2<< 4
   
 
首先把 list1 克隆一份赋给 list2 ,然后给 list2 添加新的元素。
Groovy 语言中,我们使用“ * ”操作符,可以这样做:
       def list2 = [*list1, 4 ]
 
 
这真是太简单了。
再举出一个例子,你就更感叹于“ * ”操作符的简单了。
现在,我们要创建一个 List 对象,它的元素由 1 20 的数字组成。在 Java 语言中,我们是这样做的:
       List list = new ArrayList();
       for ( int i=1;i<=20;i++)
       {
           list.add(i);
    }
 
可以看到,十分的麻烦,需要使用 for 循环挨个赋值。
我们在 Groovy 语言中,只需要这样:
     
  def list = [*( 1 .. 20 )]
 
除了 List 对象,“ * ”操作符同样也可以使用于 Map 对象:
     
      def map1 = [ 'name' : 'Tom' ,age: 19 ]
     
  def map2 = [*:map1, 'addr' : 'Shenzhen' ]

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...