Sobes.tech
Назад к вопросам
Junior — Middle
77

Можно ли объявлять методы, изменяющие состояние объектов, в классах на языке Swift?

Ответ от нейросети

sobes.tech AI

В Swift методы, которые изменяют состояние объекта, объявляются с ключевым словом mutating, но это касается только структур и перечислений (value types). Для классов (reference types) методы по умолчанию могут изменять свойства экземпляра без дополнительного ключевого слова.

То есть:

  • В классах можно объявлять методы, которые изменяют состояние объекта без mutating.
  • В структурах и перечислениях методы, изменяющие свойства, должны быть помечены как mutating.

Пример класса с изменяющим методом:

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

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

Пример структуры с mutating методом:

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

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