Sobes.tech
Junior — Middle

È possibile dichiarare metodi che modificano lo stato degli oggetti nelle classi in Swift?

sobes.tech AI

Risposta dell'AI

In Swift, i metodi che modificano lo stato di un oggetto sono dichiarati con la parola chiave mutating, ma questo riguarda solo strutture e enumerazioni (tipi di valore). Per le classi (tipi di riferimento), i metodi possono modificare di default le proprietà dell'istanza senza una parola chiave aggiuntiva.

Cioè:

  • Nelle classi, è possibile dichiarare metodi che modificano lo stato dell'oggetto senza mutating.
  • In strutture ed enumerazioni, i metodi che modificano le proprietà devono essere contrassegnati come mutating.

Esempio di una classe con metodo che modifica:

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

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

Esempio di struttura con metodo mutating:

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

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