Groovy的方法定义使用def关键字,并且参数名后面的括号不能去掉,与java不同的是不需要参数类型和返回值类型。
class MethodPractice {
static main(args) {
def obj = new MethodPractice();
def num = obj.method1(0);
println num; //null
println obj.method2(); //2
println obj.method3(); //3
}
def method1(arg1, arg2 = 1) {
println arg1;
println arg2;
}
def method2() {
1;
2;
}
def method3() {
return 3;
println 2;
}
}
如上方法的参数可以设默认值,当这个参数没有传入时,使用默认值,同时每个方法或表达式都是有返回值的,没有明确指定return时,默认返回最后执行语句的值,return之后的语句不会被执行。
while:
与Java语法相似,当while内的代码只有一行时可以去除{}
for:
for (variable in range) | for (variable in array) | for (variable in string) | for (variable in hash)
class IteratorPractice {
static main(args) {
def hash = [ ‘rex‘ : 1, ‘david‘ : 2, ‘john‘ : 3 ];
for (user in hash)
println "${user.key} : ${user.value}";
for (str in "Hello")
println str;
for (num in 1..10)
println num;
for (num in [1, 2, 3, 4])
println num;
}
}
for循环遍历Hash时,variable.value是hash的值,varuable.key是hash的key,当for循环里的代码只有一行时也可以去除{}简写。
if:
用法与Java一致,只是当if或else中的代码只有一行,那么可以去掉{}简写
switch|case|default:
用法与Java一致,只是groovy的case后面支持的验证方式更加强大,支持range、array、regex,当swotch传入参数值在range范围中,或在array中存在,或匹配正则表达式,将执行case后的语句;
break|continue:
用法同Java一致
原文:http://my.oschina.net/u/1413049/blog/468274