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