资源描述:
《groovy用户指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、集合(1)List(java.util.List)list=[1,2,'hello',newjava.util.Date()]assertlist.size()==4assertlist.get(2)=='hello'注意:一切都是对象(数字会自动转换)(2)Map(java.util.Map)map=['name':'James','location':'London']assertmap.size()==2assertmap.get('name')=='James'(3)遍历集合list=[1,2,3]for(iinlist){printlni
2、} 2、 闭包(Closures)l 闭包类似Java的内类,区别是闭包只有单一的方法可以调用,但可以有任意的参数closure={param->println("hello${param}")}closure.call("world!")closure={greeting,name->println(greeting+name)}closure.call("hello","world!")l 闭包用“{}”括起,“->”前面是参数,后面是处理语句,使用call调用l 第一个例子演示了在字符串内使用参数的形
3、式:${param}l 第二个例子演示了多参数形式:用“,”分隔参数l 如果只有一个参数,可以不写,而使用缺省的参数“it”,如下面的例子:closure={println"hello"+it}closure.call("world!") 3、eachl 遍历集合,逐个传递给闭包[1,2,3].each{item->print"${item}-"}l 上面例子的输出结果是:1-2-3- 4、collectl 遍历集合,逐个传递给闭包,处理后的结果返回给对应的项value=[1,2
4、,3].collect{it*2}assertvalue==[2,4,6]与each区别:value2=[1,2,3].each{it*2}printlnvalue2value3=[1,2,3].collect{it*2}printlnvalue3结果:[1,2,3][2,4,6]返回值不同 5、findl 根据闭包断言,返回集合中找到的第一个项目value=[1,2,3].find{it>1}assertvalue==2 6、findAlll 根据闭包断言,返回集合中所有找到的项目value=[1,2,3].findA
5、ll{it>1}assertvalue==[2,3] 7、injectl 遍历集合,第一次将传递的值和集合项目传给闭包,将处理结果作为传递的值,和下一个集合项目传给闭包,依此类推value=[1,2,3].inject('counting:'){str,item->str+item}assertvalue=="counting:123"value=[1,2,3].inject(0){count,item->count+item}assertvalue==6 8、everyl 如果集合中所有项目都匹配闭包断言,就返回tru
6、e,否则返回falsevalue=[1,2,3].every{it<5}assertvalue value=[1,2,3].every{item->item<3}assert!value 9、anyl 如果集合中任何项目匹配闭包断言,就返回true,否则返回falsevalue=[1,2,3].any{it>2}assertvalue value=[1,2,3].any{item
7、item>3}assertvalue==false 10、 min/maxl 返回集合中的最小/最大项目(对象必须可比
8、较)value=[9,4,2,10,5].max()assertvalue==10value=[9,4,2,10,5].min()assertvalue==2value=['x','y','a','z'].min()assertvalue=='a' 11、 joinl 连接集合中的值成一个字符串value=[1,2,3].join('-')assertvalue=='1-2-3' 12、 yieldl 在Python和Ruby中通过yield语句创建“yield”风格的it
9、erators,在Groovy同样有效,只是使用的是闭包classFoo{ staticvoidmain(args){fo