一、Groovy循环
1、repeat函数:
def repeat(val)
def repeat(val,repeat=循环次数)
def repeat(msg){
for(i=0;i<5;i++){
prinln msg
}
}
def repeat(msg,repeat=5){
for(i in 0..<repeat){
prinln msg
}
}
注意,参数不加def,for不需要类型,不需要分号
2、范围表达式及in循环:
0..4表示0、1、2、3、4
0..<4表示0、1、2、3
a..<e表示a、b、c、d
for(i in 0..4){
}
二、Groovy集合
1、集合定义:
def range = 0..4
def coll = [1,2,3,4]
def array= ["a","b","c"]
2、添加值
array.add("d")
array<< "d"
array[3] = "d"
3、检索(索引从0开始)
array[index]
4、集合操作
Groovy集合允许直接添加或删除单个元素或集合
def coll = [1,2,3,4]
coll + 5 //结果为[1,2,3,4,5]
coll - [2,3] //结果为[1,4,5]
5、集合函数
(1) join()函数:参数为分隔字符,作用是将集合的元素用指定分隔符拼接成字符串,与javascript的join一样
def coll = [1,2,3,4]
coll.join(",") //结果为"1,2,3,4,5"
(2) count()函数:参数为集合中的某元素,作用是统计指定元素在集合中出现的次数
def coll = [2,1,2,3,4,2]
coll.count(2) //结果为3
6、分布操作符(spread operator)
def coll = ["Java","Html"]
coll*.toUpperCase() //将集合所有值都转换成大写,结果为["JAVA","HTML"]
7、集合迭代
def coll = [1,2,3,4,5]
coll.each{
println it
}
类似Jquery的$.each方法,it是关键字,指向迭代到的当前元素。另提前引入闭包概念,each后的{}括起来的代码块就是一个闭包。如果不用it,可以自己指定变量:
def coll = [1,2,3,4,5]
coll.each{value ->
println value
}
三、Groovy映射
Java的映射是键值对的集合,典型的就是Map类型。Groovy映射机制其实就是java.util.LinkedHashMap
1、定义
def map = [name:"java","type":"book"]
注意,key不比是String,Groovy会自动转成String
2、操作
map.put("id",12)
prinln map.get("name") //打印结果:java
map.alias = "别名" //等价于map.put("alias","别名")
prinln map.alias //打印结果:别名
map["description"] = "描述信息" //等价于map.put("description","描述信息")
prinln map["description"] //打印结果:描述信息
注意,使用[]从映射获取项时,必须将项作为String引用。
3、迭代映射
map.each{key,value ->
println "${key}:${value}" //等价于println key+”:“+value
}
四、Groovy闭包
闭包是一个代码块。在集合和映射中的迭代中已经出现了闭包使用例子,对于所有的集合和映射都能使用each闭包进行迭代。闭包除了常出现在迭代中,还有其他用途,如作为参数进行传递使用(Groovy中的函数和方法除外):
//定义一个闭包,接收一个word参数
def excite = {word ->
return "${word}!!" //${word}意思是在字符串中使用word变量的值替换
}
//调用闭包
excite("java") //打印java
excite.call("jsp") //打印jsp