Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 当条件为真时,如何在一个when块中执行多个代码?_Kotlin - Fatal编程技术网

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.")