0Pricing
Swift Academy · Aula

Funções como valores de primeira classe

Armazene funções em variáveis, passe-as como argumentos e retorne-as de outras funções.

Funções como valores de primeira classe é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Boas-vindas

No Swift, as funções são valores de primeira classe — o senhor pode armazená-las em variáveis, passá-las como argumentos, retorná-las de outras funções e aninhá-las dentro de outras funções.

Tipos de função

Toda função tem um tipo definido pelos tipos de seus parâmetros e de seu retorno: ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } let operation: (Int, Int) -> Int = add print(operation(3, 4)) // 7 ``` O tipo de `add` é `(Int, Int) -> Int`.

Passando funções como argumentos

```swift func apply(_ f: (Int) -> Int, to value: Int) -> Int { f(value) } func double(_ n: Int) -> Int { n * 2 } print(apply(double, to: 5)) // 10 ``` Essa é a base de funções de ordem superior, como `map` e `filter`.

Retornando funções

```swift func multiplier(by factor: Int) -> (Int) -> Int { return { value in value * factor } } let triple = multiplier(by: 3) print(triple(7)) // 21 ``` Retornar uma função cria um *fecho* que captura `factor`.

Funções aninhadas

As funções podem ser definidas dentro de outras funções: ```swift func chooseStep(goForward: Bool) -> (Int) -> Int { func forward(_ n: Int) -> Int { n + 1 } func backward(_ n: Int) -> Int { n - 1 } return goForward ? forward : backward } let step = chooseStep(goForward: true) print(step(3)) // 4 ```

Fechos como forma abreviada

Literais de fecho anônimos podem substituir qualquer tipo de função: ```swift let square: (Int) -> Int = { $0 * $0 } print(square(6)) // 36 let doubled = [1, 2, 3].map { $0 * 2 } // [2, 4, 6] ``` `$0` faz referência ao primeiro argumento na forma abreviada de fecho.

Armazenando funções em coleções

```swift let operations: [(Int, Int) -> Int] = [ { $0 + $1 }, { $0 - $1 }, { $0 * $1 } ] for op in operations { print(op(10, 3)) } // 13, 7, 30 ```

Sintaxe de fecho final

Quando o último argumento é uma função, pode escrevê-lo fora dos parênteses: ```swift func withLogging(_ label: String, action: () -> Void) { print("Start: \(label)") action() print("End: \(label)") } withLogging("fetch") { fetchData() } ```

Identidade e igualdade de funções

Não é possível comparar dois valores de função com `==` no Swift — as funções não estão em conformidade com Equatable: ```swift // let same = add == add ❌ ``` Se precisar comparar funções, envolva a função em uma estrutura ou classe em conformidade com Equatable.

Padrão de aplicação parcial

Simule a aplicação parcial retornando funções parcialmente aplicadas: ```swift func add(_ a: Int) -> (Int) -> Int { { b in a + b } } let add5 = add(5) print(add5(3)) // 8 print(add5(10)) // 15 ``` Isso é útil para criar funções especializadas a partir de funções genéricas.

Verificação rápida

Qual é o tipo de função de uma função que recebe dois valores `Int` e retorna um `Int`?

Recapitulação

Principais conclusões: • As funções têm tipos como `(ParamTypes) -> ReturnType` • Armazene-as em variáveis, passe-as como argumentos e retorne-as de funções • Fechos (`{ }`) são valores de função anônimos • A sintaxe de fecho final simplifica os locais de chamada • Retornar funções a partir de funções cria fechos que capturam variáveis A seguir: a lição sobre encadeamento e desembrulhamento de opcionais.

Perguntas Frequentes

A aula “Funções como valores de primeira classe” é grátis?

Sim — o texto completo de “Funções como valores de primeira classe” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Funções como valores de primeira classe”?

Armazene funções em variáveis, passe-as como argumentos e retorne-as de outras funções. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Funções como valores de primeira classe”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Rótulos de argumentos e nomes de parâmetros
  2. Parâmetros padrão e variádicos
  3. Parâmetros in-out e múltiplos retornos
  4. Funções como valores de primeira classe
← Voltar para Swift Academy