Что выведет код Middle Типы значений и ссылочные обновлено
Что выведет Swift: структура с классом внутри
Вопрос
Что выведет код?
final class Box { var value = 0 }
struct Wrapper {
var box = Box()
var count = 0
}
var w1 = Wrapper()
var w2 = w1
w2.box.value = 10
w2.count = 3
print(w1.box.value, w1.count)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 10 0. При копировании Wrapper поле count копируется как значение, а поле box как ссылка на тот же объект.
Что выведет
10 0
Разбор
При копировании Wrapper поле count копируется как значение, а поле box как ссылка на тот же объект. Поэтому w1.box.value тоже 10, а w1.count остался 0.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет Swift: копия структуры
Следующий вопрос
Как работает copy-on-write в Swift
Ещё по теме «Типы значений и ссылочные»
- Copy-on-write у Array: когда копируется буфер
- Модификаторы borrowing и consuming
- Как сделать свой copy-on-write
- Existential container: как хранится any Protocol
- Типы значений и ссылочные типы в Swift
- Оператор === в Swift
- Зачем indirect у enum
- Задача на Swift: стек отмены для текстового поля