Junior — Middle
Quelle est la différence entre les types de données par référence et par valeur dans le langage Swift?
sobes.tech IA
Réponse de l'IA
En Swift, les types de données sont divisés en types par valeur (value types) et types par référence (reference types).
-
Types par valeur (par exemple, structures
struct, énumérationsenum, tuples) sont copiés lors de l'assignation ou du passage à une fonction. Cela signifie que chaque variable possède sa propre copie indépendante des données. -
Types par référence (classes
class) transmettent une référence au même objet en mémoire lors de l'assignation ou du passage. Les modifications via une référence seront visibles à travers d'autres.
Exemple :
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, car p2 est une copie de p1
var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob, car person2 et person1 pointent vers le même objet
Ainsi, la différence est que les types par valeur sont copiés, tandis que les types par référence transmettent une référence au même objet.