資源描述:
《Groovy經(jīng)典入門》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Submission631?ASERT2007GroovyTutorialDrPaulKingASERT,AustraliaAgile2007-1Topics?Introduction?LanguageBasics?Closures?BuildersSubmission631?ASERT2007?DataAccess?OtherFeatures?TestingwithGroovy?FurtherIntegration?Grails?MoreInformationAgile2007-2Whatis
2、Groovy??“GroovyislikeasuperversionofJava.ItcanleverageJava'senterprisecapabilitiesbutalsohascoolproductivityfeatureslikeclosures,Submission631?ASERT2007DSLsupport,buildersanddynamictyping.”Groovy=Java–boilerplatecode+optionaldynamictyping+closures+do
3、mainspecificlanguages+builders+metaprogrammingAgile2007-3GroovyGoodiesOverview?Fullyobjectoriented?Closures:reusableandassignablepiecesofcodeSubmission631?ASERT2007?Operatorscanbe?GPath:efficientoverloadedobjectnavigation?Multimethods?GroovyBeans?Lit
4、eraldeclarationfor?grepandswitchlists(arrays),maps,?Templates,builder,rangesandregularswing,Ant,markup,expressionsXML,SQL,XML-RPC,Scriptom,Grails,tests,MocksAgile2007-4GrowingAcceptance?Aslowandsteadystartbutnowgaininginmomentum;growinginmaturity&min
5、dshareSubmission631?ASERT2007GroovyRecipesPragmaticBookshelfAgile2007-5TheLandscapeofJVMLanguagesoptionalstatictypesSubmission631?ASERT2007DynamicfeaturescallfordynamictypesJavabytecodecallsforstatictypesTheterms“JavaVirtualMachine”and“JVM”meanaVirtu
6、alMachinefortheJava?platform.Agile2007-6GroovyStarterSystem.out.println("Hello,World!");//optionalsemicolon,println'Hello,World!'//System.out,brackets,//main()methoddefname='Guillaume'//dynamictypingprintln"$name,I'llgetthecar."http://GStringSubmission631
7、?ASERT2007Stringlonger="""${name},thecarisinthenextrow."""http://multi-linestring//withstatictypingassert0.5==1/2//BigDecimalequals()defprintSize(obj){//optionalducktypingprintobj?.size()//safedereferencing}defanimals=['ant','bee','cat']//nativelistsyntax
8、assertanimals.every{pet->//closuresupportpet<'dog'//overloading}Agile2007-7ABetterJava...importjava.util.List;importjava.util.ArrayList;classErase{privateListfilterLongerThan(Liststrings,intlength){ThiscodeListresult=newArrayList();isvalidfor(inti=0;