資源描述:
《groovy用戶指南》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、集合(1)List(java.util.List)list=[1,2,'hello',newjava.util.Date()]assertlist.size()==4assertlist.get(2)=='hello'注意:一切都是對象(數(shù)字會自動轉(zhuǎn)換)(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的內(nèi)類,區(qū)別是閉包只有單一的方法可以調(diào)用,但可以有任意的參數(shù)closure={param->println("hello${param}")}closure.call("world!")closure={greeting,name->println(greeting+name)}closure.call("hello","world!")l????????閉包用“{}”括起,“->”前面是參數(shù),后面是處理語句,使用call調(diào)用l????????第一個例子演示了在字符串內(nèi)使用參數(shù)的形
3、式:${param}l????????第二個例子演示了多參數(shù)形式:用“,”分隔參數(shù)l????????如果只有一個參數(shù),可以不寫,而使用缺省的參數(shù)“it”,如下面的例子:closure={println"hello"+it}closure.call("world!")?3、eachl????????遍歷集合,逐個傳遞給閉包[1,2,3].each{item->print"${item}-"}l????????上面例子的輸出結(jié)果是:1-2-3-?4、collectl????????遍歷集合,逐個傳遞給閉包,處理后的結(jié)果返回給對應(yīng)的項value=[1,2
4、,3].collect{it*2}assertvalue==[2,4,6]與each區(qū)別:value2=[1,2,3].each{it*2}printlnvalue2value3=[1,2,3].collect{it*2}printlnvalue3結(jié)果:[1,2,3][2,4,6]返回值不同?5、findl????????根據(jù)閉包斷言,返回集合中找到的第一個項目value=[1,2,3].find{it>1}assertvalue==2?6、findAlll????????根據(jù)閉包斷言,返回集合中所有找到的項目value=[1,2,3].findA
5、ll{it>1}assertvalue==[2,3]?7、injectl????????遍歷集合,第一次將傳遞的值和集合項目傳給閉包,將處理結(jié)果作為傳遞的值,和下一個集合項目傳給閉包,依此類推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語句創(chuàng)建“yield”風(fēng)格的it
9、erators,在Groovy同樣有效,只是使用的是閉包classFoo{?staticvoidmain(args){fo