Cette documentation est encore en cours de rédaction chez Apple et des corrections peuvent être apportées au cours des semaines à venir.

Utilisez au maximum le type Int pour tous les nombres entiers de vos constantes et vos variables dans votre code, même si vous êtes certain qu’il ne seront jamais négatif. Utilisez le type par défaut des entiers dans chaque situation où vos constantes et vos variables sont immédiatement opérationnelles avec votre code et que le compileur peut interpréter leurs types, même pour les valeurs littérales.

Utilisez un autre type d’entier uniquement quand vous en avez expressément besoin pour réaliser une tâche particulière. Parce-qu’il s’agit d’un typage imposé par une source extérieure ou un autre langage, pour la performance, l’utilisation de la mémoire ou d’autres optimisations nécessaires. Utiliser les types explicites dans ces situations évite d’voir des types de valeurs accidentelles qui ne pourront pas fonctionner avec le reste de votre code.

Conversions d’entiers

Le nombre total de chiffres qui peuvent être stocké dans un entier constant ou variable est différent en fonction du type numérique. Une constante ou un variable du type Int8 peut stocker des nombres entre -128 et 127 alors qu’une constante ou une variable du type UInt8 pourra stocker des nombres entre 0 et 255. Un nombre qui ne sera pas amené à rentrer dans cette fourchette autorisé par le typage numérique des valeurs provoquera une erreur lors de la compilation :

1 let nonNegatif: UInt = -1 
2 // UInt8 ne peut pas stocker de nombre négatif
3 let tropGros: Int8 = Int8.max + 1 
4 // UInt8 ne peut pas stocker de nombre plus grand que sa valeur maximale

Parce-que chaque type numérique peut stocker une quantité différente de valeurs, vous devrez parfois optez pour une conversion du type numérique au cas par cas. Cette approche vous aidera à convertir de façon claire et explicite vos valeurs et ainsi éviter certaines erreurs dans votre code.

Pour convertir un type spécifique de nombre vers un autre, vous devez initialiser un nouveau nombre du type désiré avec la valeur existante. Dans l’exemple suivant, la constante deuxMille est du type UInt16 et l’autre constante un est du type Uint8. Elles ne peuvent pas être additionnée ensemble directement parce-qu’elle ne possèdent pas le même type numérique. Du coup, cet exemple appelle Uint16(un) pour créer un nouveau entier du type UInt16 initialisé avec la valeur de un et utilisant sa valeur à la place de l’original :

1 let deuxMille: UInt16 = 2_000
2 let un: UInt8 = 1
3 let deuxMilleUn = deuxMille + UInt16(un)

Comme les deux côtés de l’addiction sont maintenant du type UInt16, l’opération est permise. Le résultat en sortie de la constante deuxMilleUn est du type UInt16 parce-qu’elle est le résultat d’une addition entre deux valeurs de type UInt16.

Dans Swift, Type(valeurInitiale) est le format par défaut pour initialiser une valeur et la passer dans un autre type. Derrière le rideau, UInt16 possède un convertisseur qui accepte les valeurs du type UInt8, et ce convertisseur est utilisé pour créer une nouvelle valeur en UInt16 depuis un typage UInt8 existant. Vous ne pouvez pas passer n’importe quel type ici, uniquement les types qui sont prévus pour être convertis avec UInt16. Il est possible de passer outre cette limitation en utilisant ou en développant des extensions.

Conversion des entiers et des nombres à virgule

Les conversions entre les entiers et les nombres à virgules sont réalisés très simplement :

1 let trois = 3
2 let zeroPoint = 0.14159
3 let pi = Double(trois) + zeroPoint
4 // pi vaudra 3.14159 et son type sera convertit en "Double"

Ici, la valeur de la constante trois est utilisée pour créer une nouvelle valeur du type Double, du coup l’addition est possible avec deux parties du même type. Sans cette conversion, l’opération n’aurait pas été permise.

Il est également possible de faire l’inverse et de transformer le nombre à virgule en entier à condition de lui fournir une valeur du type Double ou Float :

1 let entierPi = Int(pi)
2 // entierPi sera alors égal à 3 et du type Int

Les nombres à virgules sont toujours tronqués lorsqu’on les convertis de cette façon en créant un nouvel entier. Ce qui veut dire que 4.75 devient 4, et -3.9 devient -3.

Note : Les règles pour combiner une constante ou une variable numérique sont différentes des règles concernant les constantes et les variables littérales. La valeur littérale 3 peut directement être ajoutée à la valeur littérale 0.14159, parce-que les nombres littéraux n’ont pas de type explicite. Leur type est déterminé uniquement lors de la compilation.