Groovy的基础语法Word文档格式.docx
- 文档编号:13988670
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:6
- 大小:21.75KB
Groovy的基础语法Word文档格式.docx
《Groovy的基础语法Word文档格式.docx》由会员分享,可在线阅读,更多相关《Groovy的基础语法Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
由于使用了动态类型,不需要继承就可以得到多态的全部功
厶匕
能:
classSong{PropertylengthPropertyname}classBook{defpublicnamedefpublicauthor}defdoSomething(thing){println"
goingtodosomethingwithathingnamed="
+thing.name}这里定义了两个Groovy类,Song和Book。
这两个类都包含一个name属性。
函数doSomething,它以一个thing为参数,并试图打印这个对象的name属性,但doSomething函数没有定义其输入参数的类型,所以只要对象包含一个name属性,那么它就可以工作。
可见,Song和Book的实例都可以作为doSomething的输入参数。
mySong=newSong(length:
90,name:
"
BurningDowntheHouse"
)myBook=newBook(name:
OneDuckStuck"
author:
PhyllisRoot"
)doSomething(mySong)//printsBurningDowntheHousedoSomething(myBook)//printsOneDuckStuckdefdoSth=this.&
doSomethingdoSth(mySong)doSth(myBook)在例子的最后,我们还创建了doSomething的一个函数指针doSth,最后的执行结果与调用doSoemthing是一样的。
值得注意的是:
与GroovyBeta不同,在使用新的JSR
Groovy类时,类里面的所有的变量都必须加上def关键字或者private、protected或public这样的修饰符。
当然,也可以用@Property关键字声明成员变量。
在Script中则不必。
字符串
Groovy中的字符串允许使用双引号和单引号。
当使用双引号时,可以在字符串内嵌入一些运算式,Groovy允许您使用与bash类似的${expression}语法进行替换。
可以在字符串中包含任意的Groovy表达式。
name="
James"
println"
Mynameis${name},'
00${6+1}'
//printsMynameisJames,'
007'
Groovy还支持"
uXXXX"
引用(其中X是16进制数),用来表示特殊字符,例如"
u0040"
与"
@"
字符相同。
name="
text="
大块文本如果有一大块文本(例如HTML和XML)不想编码,你可以使用Here-docs.here-docs是创建格式化字符串的一种便利机制。
它需要类似Python的三重引号("
)开头,并以三重引号结尾。
hellothere${name}howareyoutoday?
”"
asserttext!
=nullprintln(text)
在Groovy-JSR中,不再支持下面这种多行字符串,个人觉得似乎与Here-docs功能重叠:
println(foo)
foo=“hellotherehowarethings?
对字符串的操作
contains字符串中是否包含子字符串,'
groovy'
.contains('
oo'
)将返回true;
count返回字符串中子字符串出现的次数,'
groooovy'
.count('
)将返回3.
tokenize根据分隔符将字符串分解成子串,
'
appabananaAgrap'
.tokenize('
A'
)返回
['
apple'
'
banana'
grape'
]。
减操作'
-'
,结果是'
grvy'
。
乘操作'
*3,结果是'
oooooo'
Groovy主要结构接下来将展示Groovy的一些结构,包逻辑分支,类、闭包逻辑分支if-else语句Groovy提供Java相同的if-else语句。
x=falsey=falseif(!
x){x=true}
assertx==trueif(x){x=false}else{y=true}assertx==y
Groovy也支持三元操作符。
y=5x=(y>
1)?
"
worked"
:
failed"
assertx=="
switch语句
Groovy的switch语句兼容Java代码,但是更灵活,Groovy的switch语句能够处理各种类型的switch值,可以做各种类型的匹配:
case值为类名,匹配switch值为类实例
case值为正则表达式,匹配switch值的字符串匹配该正则表达式
case值为集合,匹配switch值包含在集合中,包括ranges除了上面的,case值与switch值相等才匹配。
x=1.23result="
switch(x){case"
foo"
:
result="
foundfoo"
//letsfallthroughcase"
bar"
result+="
case[4,5,
6,‘inList‘]:
list"
breakcase12..30:
range"
breakcaseInteger:
integer"
breakcaseNumber:
result="
number"
breakdefault:
result="
default"
}assertresult=="
Switch语句的工作原理:
switch语句在做case值匹配时,会调用isCase(switchValue)方法,Groovy提供了各种类型,如类,正则表达式、集合等等的重载。
可以创建自定义的匹配类,增加isCase(switchValue)方法来提供自定义的匹配类型。
循环
while和do循环
Groovy支持Java相同的while循环,但目前暂不支持do
x=0y=5while(y-->
0){x++}assertx==5
for循环
Groovy的for循环更简单,而且能够和各种类型的数组、集合、Map、范围等一起工作,我们稍候会详细介绍这些内容。
//iterateoverarangex=0for(iin0..9){x+=i}
assertx==45
//iterateoveralistx=0for(iin[0,1,2,3,4]){x+=i}assertx==10//iterateoveranarrayarray=(0..4).toArray()x=0for(iinarray){x+=i}
assertx==10
//iterateoveramapmap=[‘abc‘:
1,‘def‘:
2,‘xyz‘:
3]x=
(einmap){x+=e.value}
assertx==6//iterateovervaluesinamapx=0for(vinmap.values()){
x+=v}
assertx==6
//iterateoverthecharactersinastringtext="
abc"
list=[]for(cintext){list.add?
}assertlist==["
a"
"
b"
c"
]
运行Groovy脚本你可以象使用Perl一样编写Groovy脚本,不需要class,不需要Main入口点,也不需要声明变量;
此外,你还可以用def语句来定义自己的函数,并在脚本中使用它。
像许多脚本语言一样,Groovy是在运行时解释的,无编译的代码在构建-运行周期中可以提供很多好处。
运行时编译使Groovy成为快速原型设计、构建不同的实用程序和测试框架的理想平台。
通过以下代码可以很简单的运行Groovy.
groovyHelloWorld.groovy
除了利用解释器来运行Groovy脚本外,Groovy提供了两种不同的解释器Shell,使所有有效的Groovy表达式可以交互地执行:
运行groovysh启动命令Shell,可以输入Groovy语句直接执行
运行groovyConsole启动Swing方式的Groovy控制台,这是一个简单的Groovy编辑器
Groovy脚本实际上是字节码级别的Java类。
因此,还可以用groovyc编译Groovy脚本。
可以通过命令行或者Ant使用groovyc以生成脚本的类文件。
这些类可以用普通java命令运行,只要classpath包括groovy.jar和asm.jar。
(wang_wang)
Groovy前言
、八、-
前言
Groovy是基于JRE的脚本语言(Script),和Perl,Python等等脚本语言一样,它能以快速简洁的方式来完成一些工作:
如访问数据库,编写单元测试用例(UnitTestCase),快速实现产品原型等等。
Groovy是由JamesStrachan和BobMcW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Groovy 基础 语法
![提示](https://static.bdocx.com/images/bang_tan.gif)