Types F#
Cette rubrique décrit les types utilisés en F# et explique comment les types F# sont nommés et décrits.
Résumé des types F#
Certains types sont considérés comme des types primitifs, comme le type booléen bool
et les types intégraux et à virgule flottante de différentes tailles, qui incluent des types pour les octets et les caractères. Ces types sont décrits dans Types primitifs.
Les autres types intégrés dans le langage incluent les tuples, les listes, les tableaux, les séquences, les enregistrements et les unions discriminées. Si vous avez de l’expérience avec d’autres langages .NET et que vous apprenez F#, vous devez lire les rubriques pour chacun de ces types. Ces types spécifiques à F# prennent en charge les styles de programmation communs aux langages de programmation fonctionnels. La plupart de ces types ont des modules associés dans la bibliothèque F# qui prennent en charge les opérations courantes sur ces types.
Le type d’une fonction inclut des informations sur les types de paramètres et le type de retour.
.NET Framework est la source des types d’objets, des types d’interface, des types délégués et d’autres types. Vous pouvez définir vos propres types d’objets, comme dans n’importe quel autre langage .NET.
En outre, le code F# peut définir des alias, qui sont des abréviations de type nommées, des noms de remplacement pour les types. Vous pouvez utiliser des abréviations de type lorsque le type est susceptible de changer à l’avenir et que vous souhaitez éviter de modifier le code qui dépend du type. Vous pouvez également utiliser une abréviation de type comme nom convivial pour un type afin de faciliter la lecture et la compréhension du code.
F# fournit des types de collection utiles qui sont conçus avec la programmation fonctionnelle à l’esprit. L’utilisation de ces types de collection vous permet d’écrire du code plus fonctionnel dans son style. Pour plus d’informations, consultez Types de collection F#.
Syntaxe des types
Dans le code F#, vous devez souvent écrire les noms des types. Chaque type a une forme syntaxique, et vous utilisez ces formes syntaxiques dans les annotations de type, les déclarations de méthode abstraites, les déclarations déléguées, les signatures et autres constructions. Chaque fois que vous déclarez une nouvelle construction de programme dans l’interpréteur, l’interpréteur imprime le nom de la construction et la syntaxe de son type. Cette syntaxe peut être simplement un identificateur pour un type défini par l’utilisateur ou un identificateur intégré, comme pour int
ou string
, mais pour les types plus complexes, la syntaxe est plus complexe.
Le tableau suivant présente les aspects de la syntaxe de type pour les types F#.
Type | Syntaxe des types | Exemples |
---|---|---|
Type primitif | type-name | int float string |
Type d’agrégat (classe, structure, union, enregistrement, énumération, et ainsi de suite) | type-name | System.DateTime Color |
abréviation de type | type-abbreviation-name | bigint |
Type complet | namespaces.type-name ou modules.type-name ou namespaces.modules.type-name |
System.IO.StreamWriter |
tableau | type-name[] ou type-name array |
int[] array<int> int array |
Tableau à deux dimensions | type-name[,] | int[,] float[,] |
Tableau à trois dimensions | type-name[,,] | float[,,] |
tuple | type-name1 * type-name2 ... | Par exemple, (1,'b',3) possède un type int * char * int |
type générique | type-parameter generic-type-name or generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
Type construit (type générique qui a un argument de type spécifique fourni) | type-argument generic-type-name or generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
Type de fonction qui a un seul paramètre | parameter-type1 ->return-type | Une fonction qui prend un int et retourne un string a le type int -> string |
Type de fonction qui a plusieurs paramètres | parameter-type1 ->parameter-type2 -> ... ->return-type | Une fonction qui prend un int et un float et retourne un string a le type int -> float -> string |
Fonction d’ordre supérieur en tant que paramètre | (function-type) | List.map a le type ('a -> 'b) -> 'a list -> 'b list |
délégué | Délégué de function-type | delegate of unit -> int |
Type flexible | #type-name | #System.Windows.Forms.Control #seq<int> |
Rubriques connexes
Sujet | Description |
---|---|
Types primitifs | Décrit les types simples intégrés, comme les types intégraux, le type booléen et les types de caractères. |
Unit, type | Décrit le type unit , un type qui a une valeur et qui est indiqué par () ; équivaut à void en C# et Nothing en Visual Basic. |
Tuples | Décrit le type tuple, un type qui se compose de valeurs associées de n’importe quel type regroupé en paires, triples, quadruples, etc. |
Options | Décrit le type d’option, un type qui peut avoir une valeur ou être vide. |
Listes | Décrit des listes, qui sont des séries ordonnées et immuables d’éléments du même type. |
Tableaux | Décrit des tableaux, qui sont des ensembles triés d’éléments mutables du même type qui occupent un bloc contigu de mémoire et sont de taille fixe. |
Séquences | Décrit le type de séquence, qui représente une série logique de valeurs ; les valeurs individuelles sont calculées uniquement en fonction des besoins. |
Enregistrements | Décrit le type d’enregistrement, un petit agrégat de valeurs nommées. |
Unions discriminées | Décrit le type d’union discriminée, un type dont les valeurs peuvent être n’importe quel ensemble de types possibles. |
Fonctions | Décrit les valeurs de fonction. |
Classes | Décrit le type de classe, un type d’objet qui correspond à un type de référence .NET. Les types de classes peuvent contenir des membres, des propriétés, des interfaces implémentées et un type de base. |
Structures | Décrit le type struct , un type d’objet qui correspond à un type de valeur .NET. Le type struct représente généralement un petit agrégat de données. |
Interfaces | Décrit les types d’interface, qui représentent un ensemble de membres qui fournissent certaines fonctionnalités, mais qui ne contiennent aucune donnée. Un type d’interface doit être implémenté par un type d’objet pour être utile. |
Délégués | Décrit le type délégué, qui représente une fonction en tant qu’objet. |
Énumérations | Décrit les types d’énumération, dont les valeurs appartiennent à un ensemble de valeurs nommées. |
Attributs | Décrit les attributs utilisés pour spécifier des métadonnées pour un autre type. |
Types d'exceptions | Décrit les exceptions, qui spécifient des informations d’erreur. |