`
jxd_zxf
  • 浏览: 229418 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Groovy学习笔记之三——语法特性

阅读更多

一、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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics