Junior — Middle
Каква е разликата между типовете данни по референция и по стойност в езика Swift?
sobes.tech AI
Отговор от 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, защото и двете референции сочат към един и същи обект
Разликата е, че типовете по стойност се копират, а типовете по референция предават референция към същия обект.