Lição: 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.