Aula 17: Enumerações e Valores Associados em Swift
Em Swift, uma enumeração (enum) é um tipo de dado poderoso que consiste em um grupo de valores relacionados e permite que você trabalhe com esses valores de forma segura quanto ao tipo. As enumerações em Swift podem não apenas representar um conjunto de valores relacionados, mas também podem conter valores associados a cada caso, tornando-as mais flexíveis e poderosas.
Enumerações Básicas
Vamos começar com o básico de como definir uma enumeração. Você pode definir um enum usando a palavra-chave enum
, seguida pelo nome da enumeração e seus casos.
Definindo uma Enumeração
enum Direção {
case norte
case sul
case leste
case oeste
}
Neste exemplo, temos uma enumeração chamada Direção
com quatro valores possíveis (casos): norte
, sul
, leste
e oeste
.
Usando Enumerações
Você pode criar uma variável do tipo da enumeração e atribuir um caso a ela:
var direçãoViagem = Direção.norte
Para mudar o valor da enumeração:
direçãoViagem = .sul
A sintaxe com ponto (.sul
) ajuda a evitar a repetição do nome da enum.
Estrutura Switch com Enumerações
Swift fornece uma poderosa estrutura switch
que funciona perfeitamente com enumerações. Ela permite que você trate diferentes casos de forma simples.
Exemplo de Uso de uma Estrutura Switch
switch direçãoViagem {
case .norte:
print("Você está viajando para o norte.")
case .sul:
print("Você está viajando para o sul.")
case .leste:
print("Você está viajando para o leste.")
case .oeste:
print("Você está viajando para o oeste.")
}
Neste exemplo, com base no valor de direçãoViagem
, a mensagem apropriada será impressa.
Enumerações com Valores Associados
Uma das características poderosas das enums em Swift é a capacidade de ter valores associados. Isso significa que cada caso da enumeração pode armazenar informações adicionais de qualquer tipo.
Definindo uma Enumeração com Valores Associados
Vamos supor que queremos definir uma enumeração que representa diferentes tipos de notificações:
enum Notificação {
case mensagem(String)
case pedidoAmizade(String)
case conviteEvento(String, String) // (nomeEvento, local)
}
Nesta enumeração, o caso mensagem
tem um valor associado do tipo String
, o caso pedidoAmizade
também possui um valor associado String
, e o caso conviteEvento
tem dois valores associados String
, nomeEvento
e local
.
Usando Enumerações com Valores Associados
Você pode criar instâncias dessa enumeração assim:
let notificação1 = Notificação.mensagem("Olá!")
let notificação2 = Notificação.pedidoAmizade("Alice")
let notificação3 = Notificação.conviteEvento("Conferência Swift", "São Francisco")
Acessando Valores Associados
Para acessar os valores associados, você ainda utiliza uma estrutura switch
:
switch notificação1 {
case .mensagem(let texto):
print("Notificação de mensagem com texto: \(texto)")
case .pedidoAmizade(let remetente):
print("Pedido de amizade de: \(remetente)")
case .conviteEvento(let nomeEvento, let local):
print("Convite para o evento: \(nomeEvento) em \(local)")
}
Neste exemplo, a palavra-chave let
permite que você extraia e use os valores associados de cada caso.
Conclusão
Enumerações com valores associados são extremamente úteis quando você precisa agrupar valores relacionados que podem ter tipos diferentes ou quantidades variadas de informações associadas. Elas fornecem uma maneira clara e segura quanto ao tipo para gerenciar estados, tornando seu código mais expressivo e mais fácil de manter.
Esta aula cobriu os fundamentos das enumerações em Swift, seu uso com estruturas switch e a poderosa característica de valores associados. Com esse conhecimento, você pode começar a aproveitar as enumerações em suas aplicações Swift de forma eficaz!