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)方法来提供自定义的匹配类型 
|