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.
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.
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)