如何用Kotlin更轻松地做到这一点?如何在if条件下简化多个等号检查?
if (translation.equals(TRANSLATION_X) ||
translation.equals(TRANSLATION_Y) ||
translation.equals(TRANSLATION_Z)
) {
return
} else {
translation = TRANSLATION_X
}
如何用Kotlin更轻松地做到这一点?如何在if条件下简化多个等号检查?
if (translation.equals(TRANSLATION_X) ||
translation.equals(TRANSLATION_Y) ||
translation.equals(TRANSLATION_Z)
) {
return
} else {
translation = TRANSLATION_X
}
首先,你可以使用structural equality operator ==
,它被传递给自动调用.equals(...)
:translation == TRANSLATION_X
,而不是translation.equals(TRANSLATION_X)
。
然后,您可以使用when
statement:
when (translation) {
TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z -> return
else -> translation = TRANSLATION_X
}
一个时,声明在这种情况似乎分配:
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
}
另一种替代方案可能更多效率比when
表达式是使用Set
:
val options = setOf(TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z)
if (translation in options) return
else translation = TRANSLATION_X
注:此代码不保留的问题原片的代码的语义:'VAL翻译= ...'只会遮蔽'翻译'从外部范围(或者如果这是一个局部变量将不会被编译),并且'translation'不会被重新分配。 – hotkey