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 int
string
, 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-parameter generic-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-argument generic-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 int string 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épviselő | függvénytípus delegálása | delegate of unit -> int |
rugalmas típus | #típus-név | #System.Windows.Forms.Control #seq<int> |
Kapcsolódó témakörök
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. |
Küzdőtér | 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. |