F#-typen

In dit onderwerp worden de typen beschreven die worden gebruikt in F# en hoe F#-typen worden genoemd en beschreven.

Samenvatting van F#-typen

Sommige typen worden beschouwd als primitieve typen, zoals het Booleaanse type bool en integrale en drijvendekommatypen van verschillende grootten, waaronder typen voor bytes en tekens. Deze typen worden beschreven in Primitieve typen.

Andere typen die in de taal zijn ingebouwd, zijn tuples, lijsten, matrices, reeksen, records en gediscrimineerde samenvoegingen. Als u ervaring hebt met andere .NET-talen en F# leert, moet u de onderwerpen voor elk van deze typen lezen. Deze F#-specifieke typen ondersteunen stijlen van programmeren die gebruikelijk zijn voor functionele programmeertalen. Veel van deze typen hebben gekoppelde modules in de F#-bibliotheek die algemene bewerkingen voor deze typen ondersteunen.

Het type van een functie bevat informatie over de parametertypen en het retourtype.

Het .NET Framework is de bron van objecttypen, interfacetypen, gedelegeerdentypen en andere. U kunt uw eigen objecttypen net zo definiëren als in elke andere .NET-taal.

F#-code kan ook aliassen definiëren, die afkortingen van het type zijn, die alternatieve namen voor typen zijn. U kunt afkortingen van typen gebruiken wanneer het type in de toekomst kan veranderen en u wilt voorkomen dat u de code wijzigt die afhankelijk is van het type. U kunt ook een afkorting van een type gebruiken als een beschrijvende naam voor een type waarmee code gemakkelijker te lezen en te begrijpen is.

F# biedt nuttige verzamelingstypen die zijn ontworpen met functionele programmering in gedachten. Door deze verzamelingstypen te gebruiken, kunt u code schrijven die functioneeler is in stijl. Zie F#-verzamelingstypen voor meer informatie.

Syntaxis voor typen

In F#-code moet u vaak de namen van typen wegschrijven. Elk type heeft een syntactische vorm en u gebruikt deze syntactische formulieren in typeaantekeningen, abstracte methodedeclaraties, gedelegeerdendeclaraties, handtekeningen en andere constructies. Wanneer u een nieuwe programmaconstructie in de interpreter declareert, drukt de interpreter de naam van de constructie en de syntaxis voor het bijbehorende type af. Deze syntaxis kan slechts een id zijn voor een door de gebruiker gedefinieerd type of een ingebouwde id, zoals voor int of string, maar voor complexere typen is de syntaxis complexer.

In de volgende tabel ziet u aspecten van de typesyntaxis voor F#-typen.

Type Typesyntaxis Voorbeelden
primitief type type-naam int

float

string
aggregaattype (klasse, structuur, samenvoeging, record, enum, enzovoort) type-naam System.DateTime

Color
afkorting van type type-afkorting-naam bigint
volledig gekwalificeerde type namespaces.type-name

or

modules.type-name

or

namespaces.modules.type-name
System.IO.StreamWriter
matrix type-name[] of

type-naammatrix
int[]

array<int>

int array
tweedimensionale matrix type-name[,] int[,]

float[,]
driedimensionale matrix type-name[,,] float[,,]
tuple type-name1 * type-name2 ... Heeft bijvoorbeeld (1,'b',3) het type int * char * int
algemeen type type-parametergeneric-type-name

or

generic-type-name<type-parameter-list>
'a list

list<'a>

Dictionary<'key, 'value>
samengesteld type (een algemeen type dat een specifiek typeargument heeft opgegeven) type-argumentgeneric-type-name

or

generic-type-name<type-argument-list>
int option

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>
functietype met één parameter parameter-type1 ->return-type Een functie die een int type gebruikt en retourneert een string type int -> string
functietype met meerdere parameters parameter-type1 ->parameter-type2 -> ... ->return-type Een functie die een int en een float heeft type retourneert stringint -> float -> string
hogere volgorde, functie als parameter (functietype) List.map heeft type ('a -> 'b) -> 'a list -> 'b list
Gemachtigde gemachtigde van functietype delegate of unit -> int
flexibel type #type-naam #System.Windows.Forms.Control

#seq<int>
Onderwerp Beschrijving
Primitieve typen Beschrijft ingebouwde eenvoudige typen, zoals integrale typen, het Booleaanse type en tekentypen.
Eenheidstype Beschrijft het unit type, een type dat één waarde heeft en die wordt aangegeven door (); gelijk aan void in C# en Nothing in Visual Basic.
Tupels Beschrijft het tupeltype, een type dat bestaat uit gekoppelde waarden van elk type gegroepeerd in paren, drievoudige, vierpersoonskamers, enzovoort.
Opties Beschrijft het optietype, een type dat een waarde kan hebben of leeg kan zijn.
Lijsten Beschrijft lijsten, die zijn gerangschikt, onveranderbare reeks elementen allemaal van hetzelfde type.
Arrays Beschrijft matrices, die geordende sets van veranderlijke elementen van hetzelfde type zijn die een aaneengesloten blok geheugen innemen en van vaste grootte zijn.
Reeksen Beschrijft het reekstype, dat een logische reeks waarden vertegenwoordigt; afzonderlijke waarden worden alleen berekend als dat nodig is.
Records Beschrijft het recordtype, een kleine aggregatie van benoemde waarden.
Gediscrimineerde vakbonden Beschrijft het gediscrimineerde samenvoegingstype, een type waarvan de waarden een van een set mogelijke typen kunnen zijn.
Functies Beschrijft functiewaarden.
Klassen Beschrijft het klassetype, een objecttype dat overeenkomt met een .NET-verwijzingstype. Klassetypen kunnen leden, eigenschappen, geïmplementeerde interfaces en een basistype bevatten.
Structs Beschrijft het struct type, een objecttype dat overeenkomt met een .NET-waardetype. Het struct type vertegenwoordigt meestal een kleine aggregatie van gegevens.
Interfaces Hierin worden interfacetypen beschreven. Dit zijn typen die een set leden vertegenwoordigen die bepaalde functionaliteit bieden, maar die geen gegevens bevatten. Een interfacetype moet worden geïmplementeerd door een objecttype om nuttig te zijn.
Afgevaardigden Beschrijft het type gedelegeerde, dat een functie vertegenwoordigt als een object.
Opsommingen Beschrijft opsommingstypen, waarvan de waarden deel uitmaken van een set benoemde waarden.
Kenmerken Beschrijft kenmerken die worden gebruikt om metagegevens voor een ander type op te geven.
Uitzonderingstypen Beschrijft uitzonderingen, waarmee foutinformatie wordt opgegeven.