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-parametergeneric-type-name

ou

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-argumentgeneric-type-name

ou

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>
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.