使用Kotlin WHEN子句进行比较 | 您所在的位置:网站首页 › kotlin创建对象 › 使用Kotlin WHEN子句进行比较 |
val foo = 2
// doesn't compile
when (foo) {
> 0 -> doSomethingWhenPositive()
0 -> doSomethingWhenZero()
< 0 -> doSomethingWhenNegative()
}
我试图找到一个无界范围的比较,但也不能使这个工作?有没有可能把它写成一个无界范围? // trying to get an unbounded range - doesn't compile when (foo) { in 1.. -> doSomethingWhenPositive() else -> doSomethingElse() }你可以把整个表达式放在第二部分,这是可以的,但似乎是不必要的重复。至少它能编译和工作。 when { foo > 0 -> doSomethingWhenPositive() foo < 0 -> doSomethingWhenNegative() else -> doSomethingWhenZero() }但我不确定这是否比我们多年来一直在做的if-else替代方案更简单。类似于: if ( foo > 0 ) { doSomethingWhenPositive() } else if (foo < 0) { doSomethingWhenNegative() } else { doSomethingWhenZero() }当然,现实世界中的问题比上面的问题更复杂,when子句很有吸引力,但并不像我所期望的那样适用于这种类型的比较。 |
CopyRight 2018-2019 实验室设备网 版权所有 |