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