Выбор ответа Junior Типы значений и ссылочные спрашивают часто обновлено
Зачем нужен mutating в структуре
Вопрос
Зачем метод структуры помечают mutating?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Метод меняет свойства self, и у let его не вызвать. У типов значений self внутри метода по умолчанию неизменяем. mutating разрешает менять свойства и даже присвоить self новое значение.
Варианты ответа
- Метод становится потокобезопасным за счёт эксклюзивного доступа
- Метод можно переопределить в наследнике структуры
- Метод вызывается только у экземпляров, размещённых в куче
- Метод меняет свойства
self, и уletего не вызватьправильный ответ
Разбор
У типов значений self внутри метода по умолчанию неизменяем. mutating разрешает менять свойства и даже присвоить self новое значение. Поэтому такой метод нельзя вызвать у константы let. К потокобезопасности это не относится, наследования у структур нет, а размещение в памяти от mutating не зависит.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Когда пропадает memberwise-инициализатор структуры
Следующий вопрос
Некопируемые типы ~Copyable в Swift
Ещё по теме «Типы значений и ссылочные»
- Copy-on-write у Array: когда копируется буфер
- Модификаторы borrowing и consuming
- Как сделать свой copy-on-write
- Existential container: как хранится any Protocol
- Типы значений и ссылочные типы в Swift
- Оператор === в Swift
- Зачем indirect у enum
- Задача на Swift: стек отмены для текстового поля