Kotlin - Enum e When

Thais Aquino
2 min readMar 7, 2018

--

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!

--

--

Thais Aquino
Thais Aquino

Written by Thais Aquino

Senior Software Engineer (Flutter | React Native | Android | iOS)

No responses yet