Sobes.tech
Junior — Middle

¿Se pueden declarar métodos que cambian el estado de los objetos en clases en Swift?

sobes.tech AI

Respuesta de la IA

En Swift, los métodos que modifican el estado de un objeto se declaran con la palabra clave mutating, pero esto solo aplica a estructuras y enumeraciones (tipos de valor). Para las clases (tipos de referencia), los métodos por defecto pueden modificar las propiedades del instancia sin una palabra clave adicional.

Es decir:

  • En las clases, se pueden declarar métodos que modifican el estado del objeto sin mutating.
  • En estructuras y enumeraciones, los métodos que modifican propiedades deben estar marcados como mutating.

Ejemplo de una clase con un método que modifica:

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

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

Ejemplo de estructura con método mutating:

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

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