1. Types valeur et types référence Types:valeur Types:référence
En Swift, les types valeur (structure et énumération)
ont presque les mêmes capacités que les classes.
Ils peuvent avoir des propriétés d’instance, des
propriétés de classe, des propriétés
calculées. Il est possible de les faire se conformer à des
protocoles, de leur rajouter des extensions...
Les types standard de Swift (Int, String, Array, Dictionary,
...) sont d’ailleurs des structures et non des classes.
Les différences notables entre une
classe et une structure sont les suivantes :
-
les classes sont les
seules à supporter l’héritage ;
-
les classes sont manipulées
par leur référence, les structures par leur valeur.
Ce dernier point a de grandes implications
sur le fonctionnement d’un programme selon qu’il utilise les unes
ou les autres.
a. Copie à l’assignation
Une des premières conséquences
est qu’une structure est copiée à l’assignation.
Par exemple, un tableau :
var structA = [1, 2, 3, 4]
var structB = structA
structA.append(5)
structA // -> [1, 2, 3, 4, 5]
structB // -> [1, 2, 3, 4]
Vous pouvez expérimenter
avec ce code dans un Playground pour vous familiariser avec le concept.
Lors de l’assignation de structA à structB, une copie de structA ...