SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
17.11.2024

Lição: 59: Correspondência de Padrões e Declarações Switch Avançadas em Swift

Em Swift, a correspondência de padrões permite que você combine diferentes tipos de dados e destrua valores usando a declaração switch. Esse recurso poderoso torna seu código mais limpo, legível e muitas vezes mais eficiente. Esta aula abordará conceitos avançados de correspondência de padrões com exemplos, mostrando como você pode utilizar declarações switch de forma eficaz.

Declaração Switch Básica

Vamos começar com uma declaração switch básica. Essa declaração avalia um valor e executa diferentes ramos com base em seu valor.

let numero = 3

switch numero {
case 1:
    print("Um")
case 2:
    print("Dois")
case 3:
    print("Três")
default:
    print("Outro número")
}

Neste exemplo, a variável numero é comparada com os casos, e "Três" será impresso como saída.

Correspondência de Padrões com Tuplas

Você também pode combinar com tuplas, permitindo estruturas de dados mais complexas.

let coordenadas = (x: 2, y: 3)

switch coordenadas {
case (0, 0):
    print("Na origem")
case (let x, 0):
    print("Sobre o eixo X em \(x)")
case (0, let y):
    print("Sobre o eixo Y em \(y)")
case (let x, let y):
    print("Ponto em (\(x), \(y))")
}

Neste exemplo, a declaração switch destrói a tupla coordenadas e combina com cada caso.

Correspondência de Padrões com Enums

Enums são uma combinação perfeita para correspondência de padrões. Você pode definir um enum e fazer um switch facilmente sobre seus casos.

enum Direcao {
    case norte, sul, leste, oeste
}

let direcao = Direcao.leste

switch direcao {
case .norte:
    print("Rumo ao Norte")
case .sul:
    print("Rumo ao Sul")
case .leste:
    print("Rumo ao Leste")
case .oeste:
    print("Rumo ao Oeste")
}

A declaração switch lida de forma organizada com diferentes direções, permitindo um código limpo e estruturado.

Correspondência Avançada de Tuplas com Condições

Você também pode adicionar condições às suas correspondências de padrões usando cláusulas where. Isso é especialmente útil quando você precisa de mais controle sobre quais casos considerar.

let velocidade = (velocidade: 30, direcao: "norte")

switch velocidade {
case (let velocidade, let direcao) where velocidade > 40:
    print("Rápido \(direcao) movendo a \(velocidade) km/h")
case (let velocidade, let direcao):
    print("Movendo \(direcao) a uma velocidade de \(velocidade) km/h")
}

Neste exemplo, combinamos com uma tupla e usamos uma condição para executar diferentes declarações de impressão com base na velocidade.

Vínculo de Valor em Casos Switch

Você pode vincular valores a constantes ou variáveis dentro dos casos do switch, permitindo que você use esses valores mais tarde em seu código.

let valorOpcional: Int? = 42

switch valorOpcional {
case .some(let valor):
    print("O valor é \(valor)")
case .none:
    print("O valor é nulo")
}

Neste exemplo, o valor opcional é verificado e, se não for nulo, ligamos o valor desembrulhado a valor.

Usando Fallthrough

Às vezes, você pode querer executar mais de um caso. Você pode usar a palavra-chave fallthrough para continuar executando casos.

let nota = "B"

switch nota {
case "A":
    print("Excelente")
fallthrough
case "B":
    print("Bom trabalho")
case "C":
    print("Boa postura")
default:
    print("Você pode fazer melhor")
}

Neste trecho, se a nota for "B", tanto "Bom trabalho" quanto "Boa postura" serão impressas.

Conclusão

A correspondência de padrões e as declarações switch avançadas em Swift oferecem aos desenvolvedores um poder e flexibilidade significativos no manuseio de estruturas de dados e condições complexas. Ao entender e utilizar esses recursos, você pode escrever um código mais limpo e eficiente. Explore esses conceitos mais a fundo em seus projetos e veja como eles podem aprimorar sua experiência de programação em Swift!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!