Kotlin 当条件为真时,如何在一个when块中执行多个代码?
我知道Kotlin 当条件为真时,如何在一个when块中执行多个代码?,kotlin,Kotlin,我知道when{}可以用作if-else分支的替换。但是,如果条件为真,是否可以执行多个分支 例如: valx=5 val y=4 什么时候{ x、 isOdd()->print(“x是奇数”)//为True,则打印“x是奇数” y、 isEven()->print(“y是偶数”)//也是真的,但不会执行 else->print(“x+y为偶数”) } 有没有办法让第二行也被执行?如果你想同时显示两台打印机,为什么不将两台打印机放在同一个主体中呢 比如: 正如你在问题中所说,if else的替
when{}
可以用作if-else分支的替换。但是,如果条件为真,是否可以执行多个分支
例如:
valx=5
val y=4
什么时候{
x、 isOdd()->print(“x是奇数”)//为True,则打印“x是奇数”
y、 isEven()->print(“y是偶数”)//也是真的,但不会执行
else->print(“x+y为偶数”)
}
有没有办法让第二行也被执行?如果你想同时显示两台打印机,为什么不将两台打印机放在同一个主体中呢 比如:
正如你在问题中所说,if else的替代品是什么时候。如果在示例中使用If-else,则只打印第一项。第一个条件为true,因此将不检查第二个条件。您可以使用以下内容:
val x = 5
val y = 4
if x.isOdd()
print("x is odd")
if y.isEven()
print("y is even")
if ((!x.isOdd())&&(y.isEven())||(x.isOdd())&&(!y.isEven()))
print("x+y is even.")
使用
when
语句无法做到这一点,因为when
语句只执行第一个带true条件的块
当存在许多不同的条件时,最好的方法是使用if
语句并保留一个Boolean
变量(handled
,在下面的示例中)要跟踪是否执行了任何操作,请执行以下操作:
fun Int.isOdd()=此%2!=0
fun Int.isEven()=此%2==0
val x=5
val y=4
var=false
if(x.isOdd()){
println(“x是奇数”)
已处理=真
}
如果(y.isEven()){
println(“y是偶数”)
已处理=真
}
//在这里添加许多其他条件
如果(!已处理){
//如果上述条件均不满足,则将执行此操作
打印(“x不是奇数,y不是偶数。”)
}
()
这张照片是:
x是奇数
y是平的
不,当
表达式不支持故障排除时。当
是一个如果elseif elseif-…-否则
的链时,这个答案的想法是正确的,但是如果缩进是固定的,它将更加清晰-如果没有对前两个如果条件进行parens,它将无法编译。最后一个if
条件在没有不必要的参数和倒置的情况下更容易阅读:if(x.isEven()&&y.isEven()| | x.isOdd()&&y.isOdd())
——或者更好的if((x+y.isEven())
!我想我们不能说if((x+y).isEven()),因为在问题x和y是分开检查的@giddsI更多地考虑了如果有100个条件,那么使用if语句会很麻烦。但是我想现在没有可用的表达式,这取决于100个条件。您可以使用@RaymondSalim表达式处理它们
val x = 5
val y = 4
if x.isOdd()
print("x is odd")
if y.isEven()
print("y is even")
if ((!x.isOdd())&&(y.isEven())||(x.isOdd())&&(!y.isEven()))
print("x+y is even.")