Utiliser le chainage des optionnels en Swift

Bonjour,

Dans le nouveau cours de Maxime sur les optionnels dans le cours Swift il ne met pas de « == » dans le if est ce normal svp ?

Merci

Oui, c’est normal.

L’instruction conditionnelle if agit en fonction d’une valeur binaire.

Exemple :

if contacts == 3 {
  ...
}

Le code commence par tester si la variable contacts contient 3, génère une valeur booléenne (false true) en fonction du test, et la communique au if. Là, l’instruction == est nécessaire pour comparer des valeurs numériques.

On voit souvent dans les codes, ce genre de syntaxe :

if test == true {
}

Le test == true est inutile, il suffit d’écrire :

if test  {
}

Ou dans le cas d’un test sur la valeur négative :

if !test {
}

qui est l’équivalent de :

if test == false {
}

if let winner = nomGagnant {
  print (winner)
}

L’instruction if let fonctionne en deux phases :

  • Elle commence par essayer de créer une valeur non optionnelle (une variable normale donc), à partir d’une variable optionnelle. Une valeur booléenne est générée indiquant si l’opération a réussie ou pas.

  • Elle utilise l’instruction if pour tester l’indicateur booléen de réussite, et agit en conséquence. Le programmeur n’a pas accès à cette valeur binaire. C’est une information temporaire…


Pour faire court, l’opérateur == permet de comparer deux variables. (COMPARAISON DE DEUX VALEURS)

L’opérateur if let permet de transformer une valeur optionnelle en une valeur non optionnelle. (AFFECTATION D’UNE VALEUR)

Les deux instructions se ressemblent visuellement, mais le fonctionnement interne est complètement différent.

5 J'aimes

C’est limpide … merci Draken !

Normal. le if porte sur la possibilité d’affecter nomGagnant à la constante winner, et donc rassemble deux étapes en une. Les deux étapes seraient :
nomGagnant != nil et let winner = nomGagnant. Ces deux étapes sont rassemblées dans la condition, et permettent de prévoir un bloc soumis à la condition en ayant déjà affecté à winner une valeur certaine, si toutefois la condition est réalisée. C’est un raccourci, bien documenté par Apple dans toutes les docs par ailleurs. Il y en a un certain nombre avec le Swift… Et ça surprend toujours un peu.

Merci bien pour ton analyse