Sobes.tech
Junior — Middle

É possível declarar métodos que alteram o estado dos objetos em classes na linguagem Swift?

sobes.tech IA

Resposta da IA

Em Swift, os métodos que alteram o estado de um objeto são declarados com a palavra-chave mutating, mas isso aplica-se apenas a estruturas e enumerações (tipos de valor). Para classes (tipos de referência), os métodos podem modificar as propriedades do instância por padrão, sem uma palavra-chave adicional.

Ou seja:

  • Em classes, é possível declarar métodos que modificam o estado do objeto sem mutating.
  • Em estruturas e enumerações, os métodos que modificam propriedades devem ser marcados como mutating.

Exemplo de uma classe com método que altera o estado:

class Counter {
    var count = 0
    func increment() {
        count += 1
    }
}

let counter = Counter()
counter.increment()
print(counter.count) // 1

Exemplo de estrutura com método mutating:

struct Counter {
    var count = 0
    mutating func increment() {
        count += 1
    }
}

var counter = Counter()
counter.increment()
print(counter.count) // 1