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-parameter generic-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-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> |
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 string int -> float -> string |
hogere volgorde, functie als parameter | (functietype) | List.map heeft type ('a -> 'b) -> 'a list -> 'b list |
delegeren | gemachtigde van functietype | delegate of unit -> int |
flexibel type | #type-naam | #System.Windows.Forms.Control #seq<int> |
Verwante onderwerpen
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. |