Kotlin - Enum e When
Enum class
É um tipo de classe que tem um conjunto de valores constantes. Exemplo simples que não deve ser novidade para você, exceto pela palavra class a mais:
Pode ter construtor:
Pode ter funções e propriedades:
Pode herdar de uma interface e implementá-la para cada valor do enum:
Não pode herdar de classes, apenas de interfaces 🙃
When
Funciona como o conhecido switch, porém com mais magia!
When com valor
Assim como o switch do Java, pode receber uma constante e ter uma instrução para cada valor correspondente como no exemplo abaixo que usa o enum de algumas casas de GOT para imprimir seus dizeres. Observe que o when pode ser usado como retorno da função 😉
When com conjunto de valores
Podemos fazer checagens com um conjunto de valores separados por vírgula conforme o exemplo abaixo. Tive que colocar o else porque a expressão when deve ser exaustiva, ou seja, deve ter checagem para cada valor que o enum contém. Como no nosso conjunto temos apenas três das sete casas contidas no enum, o else trata as casas que ficaram faltando e retorna a String “bla”.
When com objetos arbitrários
O argumento do when pode ser qualquer objeto, não só constantes, e é feita verificação de igualdade para cada condição dentro desta expressão.
When com Smart Casts
Para verificar se um objeto é de determinado tipo é usado o operador is, que é equivalente ao instanceof do Java. O kotlin tem essa inteligência de já considerar o objeto como sendo de um tipo específico após a checagem de tipo com is.
Condições do When com blocos
Há casos em que é necessário incluir mais linhas de código nas condições do when, isso é possível criando blocos:
O when é muito lindo né? 😃 Até o próximo post!