Выбор ответа Junior Типы значений и ссылочные спрашивают часто обновлено

Что происходит при присваивании структуры в Swift

Вопрос

Что происходит в строке var b = a, если a это экземпляр struct?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: b получает независимую копию: изменения b не видны в a. Структуры, перечисления и кортежи в Swift это типы значений: присваивание и передача в функцию дают независимую копию.

Варианты ответа

  1. b и a указывают на один объект в куче, как у класса
  2. b получает независимую копию: изменения b не видны в aправильный ответ
  3. Копия создаётся только для let, а для var передаётся ссылка
  4. Компилятор запретит присваивание без явного вызова copy()

Разбор

Структуры, перечисления и кортежи в Swift это типы значений: присваивание и передача в функцию дают независимую копию. Общий объект в куче характерен для классов. Разницы между let и var здесь нет, она влияет только на то, можно ли менять значение. Метода copy() у структур нет: копирование неявное.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.