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

Eug*_*kov 11 kotlin

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

if (translation.equals(TRANSLATION_X) || 
    translation.equals(TRANSLATION_Y) || 
    translation.equals(TRANSLATION_Z)
) {
    return
} else {
    translation = TRANSLATION_X
}
Run Code Online (Sandbox Code Playgroud)

hot*_*key 15

首先,您可以使用结构相等运算符==,它.equals(...)自动转换为调用:translation == TRANSLATION_X而不是translation.equals(TRANSLATION_X).

然后,您可以使用以下when语句:

when (translation) {
    TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z -> return
    else -> translation = TRANSLATION_X
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*ato 9

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

val options = setOf(TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z)

if (translation in options) return
else translation = TRANSLATION_X
Run Code Online (Sandbox Code Playgroud)


小智 6

在这种情况下似乎适合使用 when 语句:

val translation = when( translation ) {
    TRANSLATION_X -> translation
    TRANSLATION_Y -> translation
    TRANSLATION_Z -> translation
    else TRANSLATION_X
}
Run Code Online (Sandbox Code Playgroud)

我认为您也可以将三个类似的案例组合在一个句子中,如下所示:

val translation = when( translation ) {
    TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z -> translation
    else TRANSLATION_X
}
Run Code Online (Sandbox Code Playgroud)