Groovy Tip 15 “*”操作符

来源:互联网 发布:重庆富士康java 编辑:程序博客网 时间:2024/05/20 00:37
                           Groovy Tip 15 *”操作符
 
 
基于Groovy语言是一个敏捷的开发语言的观点,它在很多方面给我们提供编码的方便和高效性。“*”操作符便是其中的一个例子,它被淹没在Groovy语言的很多高效特性中,不为人轻易所知,但这却恰恰说明Groovy语言编程的敏捷性。下面,我们就来说一说“*”操作符。
先从一个简单的例子说起。
假设我们有如下的一个方法:
    defstaticint sum(int i,int j,int k)
    {
       return i+j+k
}
 
 
现在,我们要调用这个方法。常规的调用如下:
     
     sum(1,2,3)
 
通过“*”操作符,我们可以这样调用:
     def list = [1,2,3]
     
     println sum(*list)
 
我们再把例子复杂一点:
   
    defstaticint cal(int i,int j,int k,list)
    {
       return i+j+k+list.size()
    }
 
要调用上面的方法,我们可以:
     def list = [1,2,3]
     
 println cal(*list,[1,2,7])
 
 
由于Groovy的动态性,我们甚至可以:
     def list = [1,2,3,[1,2,3]]
 
    println cal(*list)
 
总之,有了“*”操作符,我们的多参数方法调用在写代码方面可以不用那么难受,可以先把所有的或部分的参数放在一个List对象里,然后把该对象传给方法。
除此之外,“*”操作符还有很多其他方面的用途,比如简化集合类的操作。下面也试图列举一些例子来说明。
我们现在有了一个List对象,如下:
     
     def list1 = [1,2,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对象,它的元素由120的数字组成。在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']