JuniorКодЧастоЕщё не отвечали
Предскажите вывод, когда та же программа использует class вместо struct
Прочитайте программу. Это предыдущий пример с class вместо struct.
class Point { var x = 0 }
var a = Point()
var b = a
b.x = 10
print(a.x)
Определите вывод и объясните, что изменилось по сравнению с версией на struct.
Печатается 10. С class var b = a копирует только ссылку, поэтому a и b указывают на один экземпляр; мутация b.x меняет этот объект, и a.x даёт 10. Ссылочные типы разделяют экземпляр, а не копируют значение.
- ✗Ожидают от
classкопирования значения, как уstruct - ✗Думают, что
var b = aглубоко копирует объект, а не ссылку - ✗Полагают, что свойства class — общие статики между экземплярами
- →Как получить независимую копию экземпляра
class? - →Почему теперь
===возвращаетtrueдляaиb?
Печатается 10. С class присваивание var b = a копирует только ссылку, поэтому a и b указывают на один экземпляр. Мутация через b меняет общий объект:
class Point { var x = 0 }
var a = Point()
var b = a // копия ссылки, не значения
b.x = 10 // меняется общий экземпляр
print(a.x) // 10
Ссылочные типы разделяют один экземпляр, поэтому запись через одно имя видна через другое.