DEV Community

Beatriz da Silva
Beatriz da Silva

Posted on

Dia 9 - #100DaysOfSwift

Inicializadores

Toda struct tem um init padrão(memberwise initializer), mas é possível criar outros inits e ao criar um init o padrão é substituído.
Caso queira manter o init padrão mesmo após criar um, é só mover o init personalizado pra uma extension.


Self

Dentro do método é possível nos referir à instância da estrutura usando self, isso é bastante usado pra usar o mesmo nome de variável ao criar o init.

Image description

O self serve para indicar que uma propriedade diz respeito ao elemento(struct, class) e não a uma variável local.


Lazy

Para otimização de performance o Swift nos deixa criar algumas propriedades apenas quando elas são necessárias(Lazy), parecido com as propriedades computadas; Mas ao contrário dessas, as propriedades lazy armazenam o resultado calculado, evitando retrabalho nos próximos acessos.
São bem performáticas quando não estão sendo utilizadas porque o código nunca roda e ainda mais performáticas quando usadas várias vezes porque seu valor é armazenado em cache.

  • Não são indicadas pra uso em coisas que não precisam de armazenamento ou que não são modificadas constantemente.
  • Não podem ser utilizadas em structs constantes.

Propriedades e métodos estáticos

Declarando uma propriedade ou método como estático é possível compartilhar eles em todas as instâncias da struct já que eles passam a ser membros da própria struct ao invés de cada instância ter o seu.

Image description


Controle de acesso

O controle de acesso do swift é baseado no conceito de módulos e arquivos e tem 5 níveis de acesso diferentes para entidades(propriedades, tipos, funções...) dentro do código.

Open - Permite que entidades sejam usadas no módulo de definição e em qualquer outro que importe o módulo de definição; Pode acessar e sobrescrever.

Public - Permite que entidades sejam usadas no módulo de definição e em qualquer outro que importe o módulo de definição; Pode acessar, mas não pode sobrescrever.

Internal - Padrão do Swift, tudo que está no mesmo módulo pode ser acessado.

File-private - Só quem está no mesmo arquivo pode usar.

Private - Só quem declarou ou extensões de quem declarou(no mesmo arquivo) podem usar.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay