Sommaire

Types Valeur : structure et énumération

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 ...