SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
15.11.2024

Aula 35: Funções Map, Filter e Reduce em Swift

Em Swift, os princípios da programação funcional nos permitem manipular coleções de maneira mais eficiente e expressiva. Três funções de ordem superior comumente usadas são map, filter e reduce. Nesta aula, vamos explorar cada uma dessas funções com exemplos.

Map

A função map é usada para transformar cada elemento de uma coleção em um novo valor. Ela recebe uma closure que define como transformar os elementos.

Exemplo de Map

Vamos supor que temos um array de inteiros e queremos criar um novo array contendo os quadrados desses inteiros.

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

let quadrados = numeros.map { numero in
    return numero * numero
}

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

Neste exemplo, usamos map para iterar sobre cada número no array numeros e retornar seu quadrado. O resultado é um novo array quadrados.

Filter

A função filter é usada para criar uma nova coleção contendo apenas os elementos que satisfazem uma determinada condição. Ela recebe uma closure que retorna um valor booleano.

Exemplo de Filter

Vamos filtrar o array de números para obter apenas os números pares.

let numerosPares = numeros.filter { numero in
    return numero % 2 == 0
}

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

Aqui, usamos filter para iterar sobre o array numeros e incluir apenas aqueles que são pares. O resultado é um novo array numerosPares.

Reduce

A função reduce é usada para combinar todos os elementos de uma coleção em um único valor. Ela recebe um valor inicial e uma closure que define como combinar os elementos.

Exemplo de Reduce

Vamos calcular a soma de todos os números em nosso array.

let soma = numeros.reduce(0) { resultadoAcumulado, numero in
    return resultadoAcumulado + numero
}

print(soma)  // Saída: 15

Neste exemplo, reduce começa com um valor inicial de 0 e itera pelo array numeros, adicionando cada número ao resultado acumulado. O resultado final é a soma de todos os números no array.

Combinando Map, Filter e Reduce

Essas funções podem ser encadeadas para operações mais complexas. Vamos considerar um cenário em que queremos encontrar a soma dos quadrados de todos os números pares.

Exemplo de Combinação das Três

let resultado = numeros
    .filter { $0 % 2 == 0 }   // Primeiro filtramos os números pares
    .map { $0 * $0 }          // Depois quadramos eles
    .reduce(0, +)             // Finalmente, somamos os quadrados

print(resultado)  // Saída: 20 (que é 4 + 16)

Aqui, primeiro filtramos os números pares, depois mapeamos esse array filtrado para seus quadrados, e finalmente reduzimos esse array para obter a soma.

Conclusão

Nesta aula, exploramos as funções map, filter e reduce em Swift. Essas ferramentas poderosas permitem que você realize operações complexas em coleções de maneira limpa e legível. Compreender essas funções é essencial para uma programação eficaz em Swift, especialmente em paradigmas de programação funcional. Pratique usá-las em seus próprios projetos para se familiarizar com sua sintaxe e aplicação.

Video

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

Thank you for voting!