#4 Apprendre le F# ! IF ELSE MATCH (Conditions)

Les conditions, on continue dans les basiques

On va voir 4 conditions réparties en deux branches :

  • If Else Elif
  • Match

Les Conditions

If

La commande la plus utilisée en programmation et universelle sur tout les langages ou presque…

Elle s’utilise de cette façon :

If MA_CONDITION THEN
    CE_QUE_FAIT_LA_FONCTION

Exemple: Savoir si un nombre est pair (on regarde si son modulo de 2 est égal à zéro ou pas)

if (chiffre % 2) = 0 then
   "pair"

Else

Dans le cas ou la condition dans le if est fausse, on execute le else.

Exemple: la même fonction que ci-dessus mais complète

if (chiffre % 2) = 0 then
    "pair"
else
    "impair"

Elif

Envie de faire plusieurs conditions ? Le Elif est un intermediaire entre le if et le else

Exemple: jeux pour enfant (ou de soirée entre potes), on doit dire chaque nombre à la suite en remplacant les multiples de 3 et de 5 par Fizz et Buzz, dans le cas d’un multiple des deux, on dit FizzBuzz

if ((chiffre % 5) = 0 && (chiffre % 3) = 0) then
    "FizzBuzz"
elif chiffre % 3 = 0 then
    "Fizz"
elif chiffre % 5 = 0 then
    "Buzz"
else
    sprintf "%d" chiffre

C’est lourd n’est ce pas ?

Match

C’est la qu’interviens le match, il permet d’être plus esthétique…

Exemple avec notre premiere fonction (La fonction pair):

match (chiffre % 2) with
| 0 -> "pair"
| _ -> "impair"

On peut cependant avec le mot when améliorer ce que peut comparer la fonction match, pour l’utiliser comme notre jeux FizzBuzz

match chiffre with 
| x when x % 5 = 0 && x % 3 = 0 -> "FizzBuzz"
| x when x % 3 = 0 -> "Fizz"
| x when x % 5 = 0 -> "Buzz"
| _ -> (sprintf "%d" chiffre)

On gagne des lignes mais aussi en visibilité ….

En clair on ne fait plus l’operation entre le match et le with mais directement dans les cas possibles.

On n’a donc plus besoin de faire plusieurs fonctions matchs pour obtenir un résultat proche du if elif else

A Retenir

If Else Elif

if CONDITION then
    ACTION
elif CONDITION then
    ACTION
else
    ACTION

Match

Forme Simple

match CONDITION with
| RESULTAT -> ACTION
| RESULTAT2 -> ACTION
| _ -> ACTION //équivaut au else

Forme avancée

match PARAMETRE with
| x when CONDITION_AVEC_X -> ACTION
| x when CONDITION2_AVEC_X -> ACTION
| _ -> ACTION

Code disponible sur GITHUB !


22. décembre 2017 Développement, F# 0