Почему value type по дефолту immutable (Swift)?

Всем привет! Объясните, пожалуйста, почему в Swift Value type по дефолту является неизменяемым? Почему конкретно для структур и энумов, мне необходимо использовать mutating ?


Ответы (1 шт):

Автор решения: schmidt9

struct и enum для того и предназначены, чтобы представлять типы значений (value type) в отличие от ссылочных типов(reference type, class). Когда что использовать - пример

Поскольку их поведение как типов является поведением хранения/копирования по значению (то бишь с гарантией неизменности объекта), то mutating используется для явного указания отличного от дефолтного поведения в случае с методами (для свойств такое указание это let или var). Подробнее например здесь

→ Ссылка