Назад к вопросам
Junior — Middle
75
В чем заключается отличие между типами данных по ссылке и по значению в языке Swift?
Ответ от нейросети
sobes.tech AI
В Swift типы данных делятся на типы по значению (value types) и по ссылке (reference types).
-
Типы по значению (например, структуры
struct, перечисленияenum, кортежи) при присваивании или передаче в функцию копируются. Это значит, что каждая переменная имеет свою независимую копию данных. -
Типы по ссылке (классы
class) при присваивании или передаче передают ссылку на один и тот же объект в памяти. Изменения через одну ссылку будут видны через другие.
Пример:
struct Point {
var x: Int
var y: Int
}
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0, т.к. p2 — копия p1
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, т.к. person2 и person1 ссылаются на один объект
Таким образом, отличие в том, что типы по значению копируются, а типы по ссылке — передают ссылку на один объект.