Énumérations
Déclaration
Les énumérations (variants) représentent des ensembles de valeurs finis. Les valeurs commencent nécessairement par une majuscule. Ils doivent être déclarés avant d'être utilisés :
# type direction = Nord | Est | Sud | Ouest;;
type direction = Nord | Est | Sud | Ouest
Nord, Est, Sud, Ouest sont les constructeurs du type direction
Pour déclarer une variable comme une énumération, il suffit de lui attribuer une valeur correspondant à un constructeur de l'énumération :
# let a = Nord;;
val a : direction = Nord
Filtre
Lorsque l'on veut tester la valeur d'une énumération, on peut utiliser match… with
plutôt que des if then else imbriqués :
type direction = Nord | Est | Sud | Ouest
let a = Nord
let b =
match a with
| Nord -> "nord"
| Est -> "est"
| Sud -> "sud"
| Ouest -> "ouest"
let () = print_string b
On peut mettre plusieurs valeurs sur une même ligne :
type direction = Nord | Est | Sud | Ouest
let a = Nord
let b =
match a with
| Nord | Est | Ouest -> "pas sud"
| Sud -> "sud"
let () = print_string b
_
correspond à tous les cas restant :
type direction = Nord | Est | Sud | Ouest
let a = Nord
let b =
match a with
| Nord | Est | Ouest -> "pas sud"
| _ -> "sud"
let () = print_string b