DEV Community

Beatriz da Silva
Beatriz da Silva

Posted on

Dia 8 - #100DaysOfSwift

Diferença de Struct e Tupla

Ambas tem comportamentos semelhantes, mas a struct leva um nome e a tupla não, por isso structs são melhores pra ser usadas em casos que você precisa usar a mesma estrutura de variáveis mais de uma vez.


Diferença de propriedade armazenada e computada e quando usar cada uma

Propriedade armazenada: Valor é armazenado na memória pra ser usado depois.

  • Se for lida regularmente e o valor não depender de outras propriedades.

Propriedade computada: Valor é recomputado toda vez que é chamado, nada mais é do que uma chamada de função que pertence à Struct.

  • Se a propriedade é lida raramente é melhor usar esse tipo, evitando o cálculo e armazenamento de algo quase nunca utilizado.
  • Se o valor da propriedade depende de valores de outras propriedades, assim você vai ter certeza de que o valor retornado sempre leva em conta o estado mais recente do programa.

Variáveis computadas criadas dentro de uma struct não podem ter seu valor modificado manualmente, ele só pode ser acessado.


Property Observers(willSet e didSet)

willSet é chamado antes do valor ser atribuído a uma propriedade
didSet é chamado depois de uma propriedade ter recebido um valor, toda vez que o valor for modificado a ação dentro dele será executada.

Image description


Métodos

Structs podem ter funções, elas se chamam métodos e eles podem usar as propriedades da struct conforme necessário. Apesar da nomenclatura diferente a palavra reservada pra declaração de métodos é a mesma de uma função: func.

Diferença entre método e função

Métodos pertencem à um tipo(struct, enum, class) e as funções não.
Essa associação à um tipo específico permite que os métodos façam referência a propriedades e métodos dentro do mesmo tipo e diferente das funções os nomes não ficam reservados, reduzindo conflitos de nomes por acidente.

Métodos mutantes

Para que as propriedades sejam mutáveis é necessário usar a palavra-chave mutating no início do método, mas ao fazer isso o método não poderá mais ser chamado por structs constantes(mesmo se o método nunca tiver mudado suas propriedades).
Um método que não for marcado como mutante não pode chamar uma função mutante, ambos tem que estar marcados pra se relacionar.


Quase todos os tipos principais do Swift são implementados como structs(String, Inteiros, Array, Dictionary, Bool).

Top comments (0)