Groovy Tip 12 Range的用法

                             Groovy Tip 12 Range的用法
 
 
Groovy语言的Range的用法值得一说,因此还是把它单独提出来说一说。Range作为Groovy语言的一种数据类型,其实非常简单。Range类型数据的标志是“ ..”,形式如下:
    def range = 1 .. 10
 
Range类型和集合类型一样,可以使用那些使用于集合对象的通用方法,如“each”、“find”、“any”和“every”等方法。如:
       range. each {
          
           print "${it} "
    }
 
上面的代码的打印结果为:
1 2 3 4 5 6 7 8 9 10
 
可以看到“ .. ”符号所表示范围包括了首尾,如果不包括尾部,可以编码如下:
       def range = 1 ..< 10
       range. each {
          
           print "${it} "
    }
 
结果为:
1 2 3 4 5 6 7 8 9
 
除了那些使用于集合类的通用方法,还有如下的一些方法,如:
       def range = 1 .. 10
      
       println range.contains( 5 )
      
       println range. size ()
       
       println range.from
      
    println range.to
 
结果为:
true
10
1
10
 
除了数字可以组织 Range 类型,还有其他一些数据也可以组织 Range 类型,如:
       ( 'a' .. 'r' ). each {
   
           print "${it},"
    }
 
结果为:
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,
 
一般来说,集合类对象我们都直接使用 each 方法,但有时候 each 方法也完全好用,请看下面的例子:
       def list = [ 3 , 45 , 2 , 34 , 8 , 98 , 76 ]
      
       ( 0 ..<list. size ()- 1 ). each {
           i ->
              (i+ 1 ..<list. size ()). each {
                  j ->
                     if (list[i]>list[j])
                     {
                         def num = list[i]
                         list[i] = list[j]
                         list[j] = num
                     }
              }
       }
      
    println list
 
 
对于上面的例子,如果你想直接对 list 对象使用 each 方法,就不好实现了。结果为:
[2,3,8,34,45,76,98]

相关文章

背景:    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...