Kotlin入门问题:用when语句替换级联if判断
嘿,别担心英文的问题,完全能get到你的需求!刚学Kotlin的时候,确实会好奇怎么用when替代这种多分支的if-else——其实when的灵活性比你想象的强多了,它不仅能匹配具体的值,还能直接写条件判断,正好适配你的场景。
先看看你原来的代码:
var variable = if (value < VAR_A) { valueA } else if (value <= VAR_B) { valueB } else if (value <= VAR_C) { valueC } else { valueD }
对应的when版本可以这么写:
var variable = when { value < VAR_A -> valueA value <= VAR_B -> valueB value <= VAR_C -> valueC else -> valueD }
是不是清爽多了?这里的when没有绑定某个特定变量,而是直接把每个判断条件放在分支里,用->指向对应的结果值,逻辑和你原来的if-else完全一致:
- 第一个分支直接处理
value < VAR_A的情况; - 后面的分支依次匹配
value <= VAR_B、value <= VAR_C; - 最后的
else就对应了所有不满足前面条件的情况——也就是value > VAR_C,直接返回valueD就好。
而且when作为表达式使用时,必须覆盖所有可能的情况,所以else分支是必不可少的,这和你原来的else作用完全一样。如果之后要加更多条件,直接在when里加新的分支就行,可读性比嵌套if-else高太多啦!
内容的提问来源于stack exchange,提问作者DAA
相关产品推荐
相关产品推荐

