7、逻辑分支
(1)if-else语句
l Groovy提供Java相同的if-else语句
x = false
y = false
if ( !x ) {
x = true
}
assert x == true
if ( x ) {
x = false
} else {
y = true
}
assert x == y
l Groovy也支持三元操作符
y = 5
x = (y > 1) ? "worked" : "failed"
assert x == "worked"
(2)switch语句
l Groovy的switch语句兼容Java代码,不同之处在于Groovy的switch语句能够处理各种类型的switch值,可以做各种类型的匹配
Ø case值为类名匹配switch值为类实例
Ø case值为正则表达式匹配switch值的字符串匹配该正则表达式
Ø case值为集合匹配switch值包含在集合中,这包括ranges
Ø 除了上面的,case值与switch值相等才匹配
x = 1.23
result = ""
switch ( x ) {
case "foo":
result = "found foo"
// lets fall through
case "bar":
result += "bar"
case [4, 5, 6, 'inList']:
result = "list"
break
case 12..30:
result = "range"
break
case Integer:
result = "integer"
break
case Number:
result = "number"
break
default:
result = "default"
}
assert result == "number"
l switch语句的工作原理:switch语句在做匹配case值时调用isCase(switchValue)方法,缺省调用equals(switchValue),但是已经被重载成各种类型,如类,正则表达式、集合等等
l 可以创建自定义的匹配类,增加isCase(switchValue)方法来提供自定义的匹配类型