Вопрос проверяет понимание value-семантики и правил изменения состояния структур в Swift.
mutating нужен, чтобы разрешить изменение свойств структуры внутри метода.
По умолчанию методы структур не могут менять self.mutating явно показывает, что метод изменяет состояние.
Это делает код безопаснее и понятнее.
Структуры в Swift ориентированы на неизменяемость, и mutating — ключевой элемент этой модели.
mutating — это модификатор метода, который разрешает изменять свойства структуры или сам self.
Перед перечислением важно понимать, что value-типы копируются при изменении.
struct Counter {
var value: Int
func increment() {
// ошибка компиляции
}
}
Методы структуры не могут менять состояние без явного разрешения.
struct Counter {
var value: Int
mutating func increment() {
value += 1
}
}
разрешает изменение свойств
может менять self целиком
делает намерение разработчика явным
экземпляр, объявленный через let, нельзя мутировать
mutating работает только с var
mutating подчёркивает изменение состояния value-типа и предотвращает неявные побочные эффекты.