Sobes.tech
Назад к вопросам
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 ссылаются на один объект

Таким образом, отличие в том, что типы по значению копируются, а типы по ссылке — передают ссылку на один объект.