Type unit (F#)
Le type unit indique l'absence d'une valeur spécifique ; le type unit n'a qu'une valeur unique qui joue le rôle d'espace réservé lorsqu'aucune autre valeur n'existe ou n'est exigée.
// The value of the unit type.
()
Notes
Chaque expression F# doit prendre une valeur. Pour les expressions qui ne génèrent pas de valeur présentant un intérêt, la valeur de type unit est utilisée. Le type unit ressemble au type void dans des langages tels que C# et C++.
Le type unit a une valeur unique qui est indiquée par le jeton ().
La valeur du type unit est souvent utilisée dans la programmation F# pour marquer l'emplacement d'une valeur requise par la syntaxe du langage, mais lorsqu'aucune valeur n'est exigée ou désirée. Par exemple, il peut s'agir de la valeur de retour d'une fonction printf. Étant donné que les actions importantes de l'opération printf se produisent dans la fonction, cette dernière ne doit pas nécessairement retourner une valeur réelle. Par conséquent, la valeur de retour est de type unit.
Certaines constructions attendent une valeur unit. Par exemple, une liaison do ou du code au niveau supérieur d'un module est censé prendre une valeur unit. Le compilateur signale un avertissement lorsqu'une liaison do ou du code au niveau supérieur d'un module produit un résultat autre que la valeur unit qui n'est pas utilisée, comme indiqué dans l'exemple suivant.
let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore
Cet avertissement est une caractéristique de la programmation fonctionnelle ; il ne s'affiche pas dans d'autres langages de programmation .NET. Dans un programme purement fonctionnel, dans lequel les fonctions n'ont pas d'effets secondaires, la valeur de retour finale est le seul résultat d'un appel de fonction. Par conséquent, lorsque le résultat est ignoré, cela peut constituer une erreur de programmation. Bien que F# ne soit pas un langage de programmation purement fonctionnel, il est recommandé d'adopter un style de programmation fonctionnel chaque fois que cela est possible.