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