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.

Top comments (0)

AWS GenAI LIVE!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️