【发布时间】:2020-09-05 14:46:33
【问题描述】:
我正在尝试使用 Kotlin 在 android 中验证表单。我的问题是,我的when statement 无法正常工作。当一个条件已经为真时,它不会检查其他条件。
代码
// It is possible, that both btNumber and ddSalutation are false, but it only checks for btNumber
// and then jumps out
fun isFormValid(): Boolean {
var error = 0
when {
btNumber.value.isNullOrEmpty() -> {
btNumberEM.value = emptyFieldError
error = 1
}
btNumber.value.toString().length < 7 -> {
btNumberEM.value = btNumberTooFewChar
error = 1
}
ddSalutation.value == ddSalutationTextPlaceHolder -> {
ddSalutationEM.value = ddSalutationNotSelected
error = 1
}
etFirstName.value.isNullOrEmpty() -> {
etFirstNameEM.value = emptyFieldError
error = 1
}
}
return error == 0
}
我希望我的问题有意义。也许我没有正确理解when statements。这可能不起作用,因为:
如果用作语句,则各个分支的值是 忽略。 (就像 if 一样,每个分支都可以是一个块,它的值 是块中最后一个表达式的值。)~Jetbrains
我知道已经有同样的问题,但没有真正的答案来解决这个问题..
感谢每一个帮助,谢谢!
【问题讨论】:
-
确实,如果条件为真,则不检查其他分支,这就是
when的工作原理。 -
什么时候更换 Switch 或嵌套的 if-else 应该这样工作