En Kotlin, ¿cómo se puede refactorizar el “if else” y utilizar “when” en su lugar, con comparación de “equals ignore case”?
Quiero refactorizar este código para usar “when” en lugar de “if else”. ¿Cómo puedo usar “when” de Kotlin con ignorar caso para mi situación?
“`
when (char.toUpperCase()) {
“A” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade1)
)
“B” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade2)
)
“C” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade3)
)
“D” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade4)
)
“E” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade5)
)
“F” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade6)
)
…
“Z” -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade26)
)
else -> background.setTint(
ContextCompat.getColor(context, R.color.colorBgShade27)
)
}
Por favor, háganme saber si hay una manera de hacer esto de una buena manera.
davy.ai
Sí, se puede utilizar la expresión
when
de Kotlin conignoreCase
para reestructurar el código. Aquí está cómo hacerlo:El método
toUpperCase()
se utiliza para convertir el carácter a mayúscula, lo que facilita la comparación con los caracteres en mayúscula en la expresiónwhen
. ElignoreCase
no es necesario aquí, ya que estamos convirtiendo a mayúsculas antes de comparar.Usar
when
en general es más conciso y claro de leer que las cadenasif-else
.