如果条件,如何简化多个等于检查?

时间:2017-04-21 12:20:38

标签: kotlin

如何使用Kotlin更轻松地完成这项工作?

if (translation.equals(TRANSLATION_X) || 
    translation.equals(TRANSLATION_Y) || 
    translation.equals(TRANSLATION_Z)
) {
    return
} else {
    translation = TRANSLATION_X
}

3 个答案:

答案 0 :(得分:13)

首先,您可以使用structural equality operator ==when statement自动转换为.equals(...)来电:translation == TRANSLATION_X而不是translation.equals(TRANSLATION_X)

然后,您可以使用https://developer.paypal.com/

when (translation) {
    TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z -> return
    else -> translation = TRANSLATION_X
}

答案 1 :(得分:7)

另一种可能比when表达更有效的替代方法是使用Set

val options = setOf(TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z)

if (translation in options) return
else translation = TRANSLATION_X

答案 2 :(得分:3)

在这种情况下,何时陈述似乎是适当的:

val translation = when( translation ) {
    TRANSLATION_X -> translation
    TRANSLATION_Y -> translation
    TRANSLATION_Z -> translation
    else TRANSLATION_X
}

我认为你也可以用这样的句子将这三个相似的案例分组:

val translation = when( translation ) {
    TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z -> translation
    else TRANSLATION_X
}