SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
15.11.2024

Aula 34: Funções de Ordem Superior

Em Swift, funções de ordem superior são aquelas que recebem outras funções como parâmetros ou retornam funções como resultados. Esse recurso poderoso permite um estilo de programação mais funcional, resultando em um código mais limpo, expressivo e reutilizável.

O Que São Funções de Ordem Superior?

Funções de ordem superior podem ser definidas como funções que operam em outras funções. Elas podem aceitar funções como argumentos e/ou retornar funções como resultado. Exemplos comuns de funções de ordem superior incluem map, filter e reduce.

Usando Funções de Ordem Superior

Vamos explorar algumas funções de ordem superior e ver como podemos utilizá-las em Swift.

A Função map

A função map transforma cada elemento de um array e retorna um novo array contendo os elementos transformados.

Exemplo:

let numeros = [1, 2, 3, 4, 5]

// Usando map para duplicar cada elemento
let numerosDuplicados = numeros.map { $0 * 2 }

print(numerosDuplicados)  // Saída: [2, 4, 6, 8, 10]

Neste exemplo, usamos a função map para multiplicar cada número no array numeros por 2. A closure { $0 * 2 } serve como a transformação aplicada a cada elemento.

A Função filter

A função filter cria um novo array contendo apenas os elementos que satisfazem uma condição específica.

Exemplo:

let numeros = [1, 2, 3, 4, 5]

// Usando filter para obter números pares
let numerosPares = numeros.filter { $0 % 2 == 0 }

print(numerosPares)  // Saída: [2, 4]

Neste caso, filtramos o array numeros para incluir apenas os números pares usando a condição $0 % 2 == 0.

A Função reduce

A função reduce combina os elementos de um array em um único valor ao aplicar repetidamente uma closure.

Exemplo:

let numeros = [1, 2, 3, 4, 5]

// Usando reduce para obter a soma do array
let soma = numeros.reduce(0) { $0 + $1 }

print(soma)  // Saída: 15

Neste exemplo, começamos com um valor inicial de 0 e somamos todos os elementos do array numeros usando a closure { $0 + $1 }. Aqui, $0 representa o valor acumulado e $1 representa o elemento atual.

Funções de Ordem Superior Personalizadas

Você também pode criar suas próprias funções de ordem superior. Vamos criar uma função de ordem superior simples que aceita uma closure e a aplica a cada elemento de um array.

Exemplo de Função de Ordem Superior Personalizada:

func customMap<T, U>(array: [T], transform: (T) -> U) -> [U] {
    var resultado: [U] = []
    for elemento in array {
        resultado.append(transform(elemento))
    }
    return resultado
}

// Uso da customMap
let numeros = [1, 2, 3, 4, 5]
let numerosAoQuadrado = customMap(array: numeros) { $0 * $0 }

print(numerosAoQuadrado)  // Saída: [1, 4, 9, 16, 25]

Aqui, customMap aceita um array do tipo T e uma closure de transformação que converte T em U. Em seguida, aplica a transformação a cada elemento do array e retorna um novo array contendo os resultados.

Conclusão

Funções de ordem superior são uma parte vital da programação em Swift, permitindo que os desenvolvedores escrevam códigos mais funcionais, concisos e expressivos. Ao utilizar funções embutidas como map, filter e reduce, juntamente com a capacidade de criar suas próprias funções de ordem superior, você pode aprimorar significativamente suas habilidades de programação em Swift.

Lembre-se de praticar o uso dessas funções de ordem superior e criar as suas próprias para obter uma compreensão mais profunda do paradigma de programação funcional em Swift.

Video

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

Thank you for voting!