Groovy入门(一)

来源:互联网 发布:淘宝网运动休闲鞋女 编辑:程序博客网 时间:2024/05/23 00:03
当在脚本中第一次使用某个变量时,需要使用Groovy关键字def,其用途时声明变量。但是,在后续的赋值过程中再次使用这个变量时,就不需要再次使用这个关键字了。

def count =0
count = count+1

在赋值语句中age=25,使用Groovy的动态类型功能。age变量所引用值得类型是在其运行过程中,而不是在编译时确定的。

变量与对象之间的关联关系称为引用。变量引用了该对象所使用的内存部分。任何使用该变量的情况,将使用引用来获得与该对象相关的对象值。

在Groovy中==能比较字符型和数字型数据,字符型变量在比较过程中,实际上是通过a.equals(b)来实现,equals是String类的方法。

字符串字面值
Groovy为表示字符串提供了数种不同的方式。举例来说,在Groovy中,可以使用单引号(’)、双引号(”)或者三引号(””")来封装字符串。而且,在Groovy中使用三引号的字符串可以包含多行文本。

def age =25
‘my age is ${age}'                                //my age is ${age}
“my age is ${age}"                               //my age is 25
“””my age is ${age}””"                         //my age is 25
“my age is \${age}”                              //my age is ${age}


使用单引号封装的字符串的值就是所列出的字符序列本身。而另外两种形式的字符串的值有可能会进一步被解释。任何包含在解释型字符串中的${age}都将被求值,其结果是字符串的一部分。

字符串是顺序排列的字符集合,因此可以通过单个字符在字符串中的位置来获取该字符,这就是所说的索引位置。可以使用索引来指定单个字符或指定字符集合的位置。字符串索引从0开始,至于该字符串长度值减一。Groovy同样也支持负数索引,但是其顺序是从字符串的末尾开始往前计算。子字符串通常可以用索引段来表示。使用索引段可以提取字符串的子集。

下面是字符串对象greeting的索引和索引段范例“
def greeting = ‘hello world’
greeting[4]                    //o
greeting[-1]                   //d
greeting[1..2]                //el
greeting[1..<3]              //el
greeting[4..2]                //oll
greeting[4,1,6]              //oew

基本的字符串操作包括两个字符串的合并、字符串的复制,以及计算字符串的长度。

def greeting =‘Hello world’               
‘Hello’*3                                             //HelloHelloHello
‘Hello’+’world'                                   //Helloworld
greeting -‘o word'                              //Hell
greeting.size()                                    //11
greeting.length()                                //11
greeting.count(‘o’)                             //2 
greeting.contains(‘ell’)                       //true

举例来说,’Hello’+’World’表示”Hello”.puls(“world”)。”Hello”字符串对象调用了plus方法,其参数为字符串“word”。
groovy字符串是不能改变的,他们在任何地方都不可能改变。可以通过索引、索引字段以及合并其他字符串的方式创建一个新的String对象。因此,greeting-’o world’表达式演示了新String对象”Hell”的产生过程,但字符串对象greeting本身仍然没有变化。String类在java中是fanl类型,不可重写不可改变。


列表(list)、映射(map)和范围(range)
列表、映射和范围都是引用其他对象的集合。
列表和映射能够引用不同类型的对象,范围则表示整形值的集合。
列表和映射能够动态的增长。


列表是一种用来存储数据项集合的数据结构。在Groovy中,列表可以有序的保存所引用的对象。列表中对象所占用的位置也是有序的,并且能够通过一个整数类型索引来标识。列表是一系列包含在方括号中的对象集合,这些对象用逗号分隔。

[11,12,13,14]                  整数型列表
[‘ciao’,’joe']                     字符型列表
[1,2,[3,4],5]                     嵌套列表
[‘qiao’,1,4.11]                 含有不同类型的列表
[]                                     空列表

Groovy列表使用索引操作符[]来标识元素值。列表的索引从0开始,它指向列表的第一个元素。

def numbers=[12,13,14,15]
numbers[0]               //12
numbers[3]               //15
numbers[-1]             //15
numbers[-2]             //14

索引字段同样也可以用于列表
[11,12,13,14,15][3]          //14

“[]”操作符就是List类中定义的getAt方法。因此,当使用numbers[3]引用列表元素时,必须认识到,实际上是List对象numbers.getAt(3)


bumbers[0..2]               //返回列表[12,13,14]
bumbers[1..<3]             //返回列表[13,14]

使用列表的索引操作符同样也能够为列表赋新值,如果新值也是应该列表,同样赋值
numbers[1]=411          //返回列表[12,411,14,15]
numbers[2]=[2,4]         //返回列表[12,411,[2,4],15]

putAt方法提供了赋值语句的功能。通过<<运算符(即leftShift方法)可以把一个新元素追加到列表的最后。
numbers=[11,12,13,14]
numbers<<15             //返回列表[11,12,13,14,15]
同样,使用+操作符(即plus方法)可以连接两个列表
numbers+[16,17]        //返回列表[11,12,13,14,15,16,17]
—操作符(即minus方法)从列表中删除元素:
numbers-[13]              //返回列表[11,12,14,15,16,17]

列表方法
 

映射
是一种引用对象的无序集合,映射中的所有元素都可以通过关键字访问,他使用的关键字可以是任意类型的。当向一个映射插入值时,需要同时提供两个参数:关键字及其相应的值。在映射中,使用索引关键字即可检索出相应的值。
[‘Ken’:’Barclay’,’John’:’Savage’]                  //名/姓集合
[4:[2],6:[3,2],12:[6,4,3,2]]                              //整形关键字及约束列表
[:]                                                                 //空映射

def names = [‘Ken’:’Barclay’,’John’:’Savage']
def divisors = [4:[2],6:[3,2],12:[6,4,3,2]]
names[‘Ken’]                                               //Barclay
names.Ken                                                  //Barclay
names[‘Jessie’]                                           //null
divisors[6]                                                   //[3,2]


和列表一样引用也是getAt()方法,赋值也是putAt()

def names=[1:’joe’,’1’:’Joe']

names[1]                    //joe
names[‘1’]                  //Joe

上面映射范例的第一个项的关键字是Integer类型,值为1;而第二项的关键字是String类型,值为’1’。可以通过将第一个关键字作为整数,将第二个关键字作为字符串对象处理的方式达到此目的。但如果这不是我们的真正意图,就必须格外谨慎了。

映射方法



范围
范围是表达特定序列值的一种简略方法。他通过序列中第一个值和最后一个值表示,范围还具有包含和不包含关系。一个具有包含关系的范围,将包含从第一个值开始到最后一个值为止的所有值了一个具有不包含关系的范围,则包含除了最后一个值之外的所有值。

1900..1999
2000..<2100
‘A’..’D'
10..1
‘Z’..’X'

包含边界的范围通过“..”表示,而不包含边界的范围则在下边界和上边界之间使用“..<”。范围可以通过字符串或者整形值表示。如上所示,范围也可以通过生序或者降序表示。

def start = 10
def finish = 20
start..finish+1                                   //[10,11,12,13,14,15,16,17,18,19,20,21]





0 0