F#-típusok

Ez a témakör az F#-ban használt típusokat, valamint az F#-típusok elnevezését és leírását ismerteti.

Az F#-típusok összegzése

Egyes típusokat primitív típusoknak tekintünk, például a logikai típustbool, valamint a különböző méretű integrál- és lebegőpontos típusokat, amelyek bájt- és karaktertípusokat is tartalmaznak. Ezeket a típusokat primitív típusok ismertetik.

A nyelvbe beépített egyéb típusok közé tartoznak a rekordok, listák, tömbök, szekvenciák, rekordok és diszkriminált egyesítések. Ha más .NET-nyelvekkel is rendelkezik tapasztalatokkal, és F#-et tanul, olvassa el az egyes típusokhoz tartozó témaköröket. Ezek az F#-specifikus típusok támogatják a funkcionális programozási nyelvekhez gyakran használt programozási stílusokat. Számos ilyen típushoz társított modulok tartoznak az F#-kódtárban, amelyek támogatják az ilyen típusok gyakori műveleteit.

A függvény típusa információkat tartalmaz a paramétertípusokról és a visszatérési típusról.

A .NET-keretrendszer az objektumtípusok, a felülettípusok, a delegálási típusok és mások forrása. Saját objektumtípusokat ugyanúgy definiálhat, mint bármely más .NET-nyelven.

Az F#-kód emellett definiálhat aliasokat is, amelyek névvel ellátott típus rövidítések, amelyek a típusok alternatív nevei. Akkor használhat típus rövidítéseket, ha a típus a jövőben változhat, és el szeretné kerülni a típustól függő kód módosítását. Vagy egy típus rövidítését is használhatja egy olyan típus rövidítéseként, amely megkönnyíti a kód olvasását és megértését.

Az F# hasznos gyűjteménytípusokat biztosít, amelyek funkcionális programozással vannak megtervezve. Ezekkel a gyűjteménytípusokkal stílusosabb kódot írhat. További információ: F# Gyűjteménytípusok.

Típusok szintaxisa

Az F#-kódban gyakran ki kell írnia a típusok nevét. Minden típus rendelkezik szintaktikai űrlappal, és ezeket a szintaktikai űrlapokat típusjegyzetekben, absztrakt metódusdelegációkban, delegált deklarációkban, aláírásokban és egyéb szerkezetekben használja. Amikor új programszerkezetet deklarál az értelmezőben, az értelmező kinyomtatja a szerkezet nevét és a típus szintaxisát. Ez a szintaxis lehet csak egy felhasználó által definiált típus vagy egy beépített azonosító azonosítója, például az vagy intstring, de összetettebb típusok esetén a szintaxis összetettebb.

Az alábbi táblázat az F#-típusok típusszintaxisának szempontjait mutatja be.

Típus Típus szintaxisa Példák
primitív típus típus-név int

float

string
összesítő típus (osztály, struktúra, egyesítés, rekord, szám stb.) típus-név System.DateTime

Color
típus rövidítése type-abbreviation-name bigint
teljes körűen minősített típus namespaces.type-name

vagy

modules.type-name

vagy

namespaces.modules.type-name
System.IO.StreamWriter
array type-name[] vagy

típus-név tömb
int[]

array<int>

int array
kétdimenziós tömb type-name[,] int[,]

float[,]
háromdimenziós tömb type-name[,,] float[,,]
rekord type-name1 * type-name2 ... Például (1,'b',3) van típus int * char * int
általános típus type-parametergeneric-type-name

vagy

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

list<'a>

Dictionary<'key, 'value>
konfigurált típus (olyan általános típus, amely adott típusargumentumot adott meg) type-argumentgeneric-type-name

vagy

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

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>
egyetlen paraméterrel rendelkező függvénytípus parameter-type1 ->return-type Olyan függvény, amely egy típust intstring vesz fel és ad vissza int -> string
több paramétert tartalmazó függvénytípus parameter-type1 ->parameter-type2 -> ... ->return-type Egy függvény, amely egy int és egy függvényt float vesz fel, és egy típust string ad vissza int -> float -> string
magasabbrendű függvény paraméterként (függvénytípus) List.map típussal rendelkezik ('a -> 'b) -> 'a list -> 'b list
Küldött függvénytípus delegálása delegate of unit -> int
rugalmas típus #típus-név #System.Windows.Forms.Control

#seq<int>
Téma Leírás
Primitív típusok A beépített egyszerű típusokat, például az integráltípusokat, a logikai típusokat és a karaktertípusokat ismerteti.
Egység típusa unit A típust írja le, egy olyan típust, amely egy értékkel rendelkezik, és amelyet (); egyenértékű a void C#-ban és Nothing a Visual Basicben.
Csuples A rekordtípust írja le, egy típust, amely párok, triplák, négyes és így tovább csoportosított típus társított értékeiből áll.
Beállítások A beállítás típusát írja le, amely lehet érték vagy üres.
Listák Olyan listákat ismertet, amelyek rendezett, nem módosítható elemsorozatok, amelyek mind azonos típusúak.
Tömbök Olyan tömböket ismertet, amelyek azonos típusú, egybefüggő memóriablokkot elfoglaló, rögzített méretű mutable elemek rendezett készletei.
Szekvenciák A szekvencia típusát írja le, amely egy logikai értéksorozatot jelöl; az egyes értékek kiszámítása csak szükség szerint történik.
Rekordok A rekordtípust, a névvel ellátott értékek kis összesítését ismerteti.
Diszkriminált uniók A diszkriminált egyesítő típust írja le, amely olyan típus, amelynek értékei a lehetséges típusok bármelyikét tartalmazhatják.
Functions A függvényértékeket ismerteti.
Osztályok Az osztálytípust ismerteti, amely egy .NET-referenciatípusnak megfelelő objektumtípus. Az osztálytípusok tartalmazhatnak tagokat, tulajdonságokat, implementált felületeket és egy alaptípust.
Szerkezetek Ez a struct típus egy .NET-értéktípusnak megfelelő objektumtípus. A struct típus általában egy kis adatösszesítést jelöl.
Felületek A felülettípusokat ismerteti, amelyek olyan tagokat jelölnek, amelyek bizonyos funkciókat biztosítanak, de nem tartalmaznak adatokat. A hasznosság érdekében az illesztőtípust objektumtípussal kell implementálnia.
Küldöttek A delegálás típusát írja le, amely egy függvényt jelöl objektumként.
Számbavételek Az enumerálási típusokat ismerteti, amelyek értékei nevesített értékek készletéhez tartoznak.
Attribútumok Olyan attribútumokat ismertet, amelyek egy másik típus metaadatainak megadására szolgálnak.
Kivételtípusok A hibainformációkat meghatározó kivételeket ismerteti.