Partager via


Valeurs

Les valeurs en F# sont des quantités qui ont un type spécifique ; les valeurs peuvent être des nombres intégraux ou à virgule flottante, des caractères ou du texte, des listes, des séquences, des tableaux, des tuples, des unions discriminées, des enregistrements, des types de classes ou des valeurs de fonction.

Liaison d’une valeur

La liaison de terme signifie associer un nom à une définition. Le let mot clé lie une valeur, comme dans les exemples suivants :

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

Le type d’une valeur est déduit de la définition. Pour un type primitif, tel qu’un nombre intégral ou à virgule flottante, le type est déterminé à partir du type du littéral. Par conséquent, dans l’exemple précédent, le compilateur déduit le type d’être bunsigned int, tandis que le compilateur déduit le type à a être int. Le type d’une valeur de fonction est déterminé à partir de la valeur de retour dans le corps de la fonction. Pour plus d’informations sur les types de valeurs de fonction, consultez Functions. Pour plus d’informations sur les types littérals, consultez Littéraux.

Le compilateur n’émet pas de diagnostics sur les liaisons inutilisées par défaut. Pour recevoir ces messages, activez l’avertissement 1182 dans votre fichier projet ou lors de l’appel du compilateur (voir --warnon sous Options du compilateur).

Pourquoi immuable ?

Les valeurs immuables sont des valeurs qui ne peuvent pas être modifiées tout au long de l’exécution d’un programme. Si vous êtes habitué aux langages tels que C++, Visual Basic ou C#, vous pouvez constater que F# place la priorité sur les valeurs immuables plutôt que les variables qui peuvent être affectées de nouvelles valeurs pendant l’exécution d’un programme. Les données immuables sont un élément important de la programmation fonctionnelle. Dans un environnement multithread, les variables mutables partagées qui peuvent être modifiées par de nombreux threads différents sont difficiles à gérer. En outre, avec des variables mutables, il peut parfois être difficile de savoir si une variable peut être modifiée lorsqu’elle est passée à une autre fonction.

Dans les langages fonctionnels purs, il n’existe aucune variable et les fonctions se comportent strictement comme des fonctions mathématiques. Lorsque le code dans un langage procédural utilise une affectation de variable pour modifier une valeur, le code équivalent dans un langage fonctionnel a une valeur immuable qui est l’entrée, une fonction immuable et différentes valeurs immuables comme sortie. Cette rigueur mathématique permet un raisonnement plus strict sur le comportement du programme. Ce raisonnement plus strict est ce qui permet aux compilateurs de vérifier le code de manière plus rigoureuse et d’optimiser plus efficacement, et de faciliter la compréhension et l’écriture du code correct par les développeurs. Le code fonctionnel est donc susceptible d’être plus facile à déboguer que le code procédural ordinaire.

F# n’est pas un langage fonctionnel pur, mais il prend entièrement en charge la programmation fonctionnelle. L’utilisation de valeurs immuables est une bonne pratique, car cela permet à votre code de tirer parti d’un aspect important de la programmation fonctionnelle.

Variables mutables

Vous pouvez utiliser le mot clé mutable pour spécifier une variable qui peut être modifiée. Les variables mutables en F# doivent généralement avoir une étendue limitée, soit en tant que champ d’un type, soit en tant que valeur locale. Les variables mutables avec une étendue limitée sont plus faciles à contrôler et sont moins susceptibles d’être modifiées de manière incorrecte.

Vous pouvez affecter une valeur initiale à une variable mutable à l’aide du let mot clé de la même façon que vous définissez une valeur. Toutefois, la différence est que vous pouvez ensuite affecter de nouvelles valeurs à des variables mutables à l’aide de l’opérateur <- , comme dans l’exemple suivant.

let mutable x = 1
x <- x + 1

Les valeurs marquées mutable peuvent être automatiquement promues 'a ref si elles sont capturées par une fermeture, y compris les formulaires qui créent des fermetures, telles que seq les constructeurs. Si vous souhaitez être averti lorsque cela se produit, activez l’avertissement 3180 dans votre fichier projet ou lors de l’appel du compilateur.

Titre Descriptif
autoriser les liaisons Fournit des informations sur l’utilisation du let mot clé pour lier des noms à des valeurs et des fonctions.
Fonctions Fournit une vue d’ensemble des fonctions en F#.

Voir aussi