Swift Academy · Aula

Inicializadores automáticos e inicializadores personalizados

Compreenda os inicializadores automáticos gerados pelo sistema e aprenda a escrever inicializadores personalizados.

Aula 1 de 412 etapas

Inicializadores automáticos e inicializadores personalizados é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 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

As estruturas do Swift recebem um *inicializador membro a membro* gratuito que aceita todas as propriedades armazenadas. No entanto, você pode personalizá-lo ou estendê-lo com sua própria lógica de inicialização.

Inicializador membro a membro gerado automaticamente

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` Não é necessário escrever `init` por conta própria — o compilador fornece um.

Adicionando um inicializador personalizado

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

Preservando o inicializador membro a membro

Definir um inicializador personalizado suprime o inicializador membro a membro gerado automaticamente. Para manter ambos, coloque o inicializador personalizado em uma extensão: ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

Valores padrão de propriedades

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

Delegação de inicializadores com self.init

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

Inicializadores que podem falhar

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

Inicializador com validação

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

Inicializador de estrutura vs inicializador de classe

Diferenças principais em relação aos inicializadores de classes: • Estruturas podem usar a delegação com `self.init()` • Estruturas não herdam inicializadores (não há `super.init()`) • Todas as propriedades armazenadas devem ser inicializadas antes do uso • Não há as palavras-chave `required` ou `designated` / `convenience`

Prévia de init(from decoder:)

Estruturas em conformidade com `Decodable` recebem um inicializador automático: ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

Verificação rápida

Onde deve ser colocado um inicializador personalizado para preservar o inicializador membro a membro gerado automaticamente?

Recapitulação

Principais aprendizados: • Estruturas recebem gratuitamente um inicializador membro a membro do compilador • Inicializadores personalizados no corpo da estrutura suprimem o inicializador membro a membro • Coloque inicializadores personalizados em extensões para manter ambos • Use `self.init()` para delegar entre inicializadores • Inicializadores que podem falhar retornam `nil` quando a entrada é inválida Próximo: propriedades armazenadas e observadores de propriedades.
Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “Inicializadores automáticos e inicializadores personalizados” é grátis?

Sim — o texto completo de “Inicializadores automáticos e inicializadores personalizados” é 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 “Inicializadores automáticos e inicializadores personalizados”?

Compreenda os inicializadores automáticos gerados pelo sistema e aprenda a escrever inicializadores personalizados. 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 1 de 4.

Quanto tempo leva a aula “Inicializadores automáticos e inicializadores personalizados”?

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. Inicializadores automáticos e inicializadores personalizados
  2. Propriedades armazenadas e observadores de propriedades
  3. Propriedades calculadas em estruturas
  4. Métodos mutáveis e semântica de cópia na escrita
← Voltar para Swift Academy