es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, se puede utilizar la expresión when de Kotlin con ignoreCase para reestructurar el código. Aquí está cómo hacerlo:

        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))
        }
    

    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ón when. El ignoreCase 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 cadenas if-else.

Comments are closed.