如何在groovy switch语句中放置多个变量?如。如果任何变量为false,它将打印&;false&;否则打印"真实"。下面的脚本不起作用
a=true
b=true
c=true
switch(true)
{
case(a==true && b==true && c==true)
println("true")
break
case(a==false || b==false || c==false)
println("false")
break
}
switch
语句用于针对多个条件测试单个值。
虽然switch
语句是通用的,但当测试多个变量时,普通的旧if/else
更合适:
if( a && b && c ) { println 'true' }
else { println 'false' }
或者您可以使用in
(成员)操作符。它测试LHS操作数(值)是否包含在RHS操作数(集合)中。
if( false in [a,b,c] ) { println 'false' }
else { println 'true' }
您可以执行如下操作,创建一个结合了三个变量的函数并打开它。但我不会推荐它;组合函数是一个不必要的新元素,很容易出错。您最好使用一系列if/else语句。
a = true
b = true
c = true
switch(a.toString() + b.toString() + c.toString())
{
case "truetruetrue":
println("true")
break
case "falsefalsefalse":
println("false")
break
default:
println("a different combination")
break
}
Groovy Web Console
您可以使用groovy.lang.Tuple:
a = true
b = true
c = true
switch (new Tuple(a, b, c)) {
case [new Tuple(true, true, true)]:
println "All true!"
break
case [new Tuple(true, false, true)]:
println "b is false"
break
default:
println "Something else"
}
这里有一个警告:奇怪的是,Tupleextends java.util.AbstractList
因此是一个可迭代的"集合"AbstractList。如果你给传递一个集合在case
标签- groovy将尝试做一个"in list"元素成员检查。意思是switch ("bar") { case ["foo", "bar", "buzz"]: ...}
-将触发。
因此,您需要将case-labels中的具体元组包装成一个单例列表:case [new Tuple(true, true, true)]
notcase new Tuple(true, true, true)
.