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)