Enum é um tipo definido no Swift que representa um grupo de valores e permite sua manipulação de uma forma segura ao contar com todas as características que tipagem nos oferece.
Vamos definir no exemplo, uma enum Estado
com dois valores: ON
e OFF
para um botão:
enum Estado {
case ON
case OFF
}
Agora, podemos fazer uma função usa esse Estado
para algo:
func botao(estado: Estado) {
if(estado == .ON) {
print("Botão ligado")
} else {
print("Botão desligado")
}
}
Veja que para sabermos qual o Estado
que foi passado para a função temos um if(estado == .ON)
. Esse .ON
pode ser escrito como Estado.ON
e é justamente um dos valores que definimos na enum.
Então, ao fazermos
botao(estado: .OFF)
//ou botao(estado: Estado.OFF)
teremos a seguinte saída:
Botão desligado
Podemos passar a própria enum no print. Neste caso, veja como ficará:
func botao(estado: Estado) {
print("Botão \(estado)")
}
Agora, ao chamarmos botao(estado: .OFF)
, teremos:
Botão OFF
Veja que por padrão, o nome que damos aos valores da enum viram uma string que pode ser usada em prints, por exemplo.
Podemos também customizar essa string associada aos nossos valores:
enum Estado : String {
case ON = "ligado"
case OFF = "desligado"
}
E usá-la na nossa função por meio do método rawValue
:
func botao(estado: Estado) {
print("Botão \(estado.rawValue)")
}
Agora, ao fazemos...
botao(estado: .OFF)
Teremos...
Botão desligado
Veja que agora, não temos o if/else
e nossa função continua devolvendo a mesma saída que o primeiro exemplo. A diferença é que usamos melhor a enum.