Typy F#
Toto téma popisuje typy, které se používají v jazyce F# a jak jsou typy jazyka F# pojmenované a popsané.
Souhrn typů jazyka F#
Některé typy jsou považovány za primitivní typy, jako je logický typ bool
a celočíselný typ a typy s plovoucí desetinou čárkou různých velikostí, které zahrnují typy bajtů a znaků. Tyto typy jsou popsány v primitivních typech.
Mezi další typy, které jsou součástí jazyka, patří řazené kolekce členů, seznamy, pole, sekvence, záznamy a diskriminované sjednocení. Pokud máte zkušenosti s jinými jazyky .NET a učíte se jazyk F#, měli byste si přečíst témata pro každý z těchto typů. Tyto typy specifické pro jazyk F#podporují styly programování, které jsou společné pro funkční programovací jazyky. Mnoho z těchto typů má přidružené moduly v knihovně jazyka F#, které podporují běžné operace s těmito typy.
Typ funkce obsahuje informace o typech parametrů a návratovém typu.
Rozhraní .NET Framework je zdrojem typů objektů, typů rozhraní, typů delegátů a dalších. Vlastní typy objektů můžete definovat stejně jako v jakémkoli jiném jazyce .NET.
Kód F# může také definovat aliasy, které jsou pojmenované zkratky typů, což jsou alternativní názvy pro typy. Zkratky typů můžete použít, když se typ může v budoucnu změnit a chcete se vyhnout změně kódu, který závisí na typu. Nebo můžete použít zkratku typu jako popisný název pro typ, který usnadňuje čtení a pochopení kódu.
Jazyk F# poskytuje užitečné typy kolekcí navržené s ohledem na funkční programování. Použití těchto typů kolekcí vám pomůže psát kód, který je více funkční ve stylu. Další informace naleznete v tématu Typy kolekcí jazyka F#.
Syntaxe pro typy
V kódu jazyka F# často musíte zapsat názvy typů. Každý typ má syntaktickou formu a tyto syntaktické formuláře použijete v poznámkách k typu, deklarací abstraktní metody, delegování deklarací, podpisů a dalších konstruktorů. Pokaždé, když v interpretu deklarujete nový konstruktor programu, interpret vytiskne název konstruktoru a syntaxi pro jeho typ. Tato syntaxe může být pouze identifikátor uživatelem definovaného typu nebo předdefinovaný identifikátor, například pro int
nebo string
, ale u složitějších typů je syntaxe složitější.
Následující tabulka ukazuje aspekty syntaxe typu pro typy F#.
Typ | Syntaxe typu | Příklady |
---|---|---|
primitivní typ | název typu | int float string |
agregační typ (třída, struktura, sjednocení, záznam, výčet atd.) | název typu | System.DateTime Color |
zkratka typu | type-abbreviation-name | bigint |
plně kvalifikovaný typ | namespaces.type-name nebo modules.type-name nebo namespaces.modules.type-name |
System.IO.StreamWriter |
pole | type-name[] nebo Pole s názvem typu |
int[] array<int> int array |
dvojrozměrné pole | type-name[,] | int[,] float[,] |
Trojrozměrné pole | type-name[,] | float[,,] |
tuple | type-name1 * type-name2 ... | Má například typ. (1,'b',3) int * char * int |
obecný typ | type-parameter generic-type-name nebo generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
konstruovaný typ (obecný typ se zadaným argumentem konkrétního typu) | type-argument generic-type-name nebo generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
typ funkce, který má jeden parametr | parameter-type1 ->return-type | Funkce, která přebírá a int vrací string typ int -> string |
typ funkce, který má více parametrů | parameter-type1 ->parameter-type2 -> ... ->return-type | Funkce, která přebírá a int float vrací string typ int -> float -> string |
vyšší funkce pořadí jako parametr | (typ funkce) | List.map má typ ('a -> 'b) -> 'a list -> 'b list |
delegát | delegát typu funkce | delegate of unit -> int |
flexibilní typ | #název typu | #System.Windows.Forms.Control #seq<int> |
Související témata
Popis | Popis |
---|---|
Primitivní typy | Popisuje předdefinované jednoduché typy, jako jsou integrální typy, logický typ a typy znaků. |
Typ jednotky | Popisuje unit typ, typ, který má jednu hodnotu, která je označena (); ekvivalentní v void jazyce C# a Nothing v jazyce Visual Basic. |
Řazené kolekce členů | Popisuje typ řazené kolekce členů, typ, který se skládá z přidružených hodnot libovolného typu seskupených ve dvojicích, trojité, čtyřnásobné, čtyřnásobné atd. |
Možnosti | Popisuje typ možnosti, typ, který může mít hodnotu nebo být prázdný. |
Seznamy | Popisuje seznamy, které jsou uspořádané, neměnné řady prvků stejného typu. |
Pole | Popisuje pole, která jsou seřazené sady proměnlivých prvků stejného typu, které zabírají souvislý blok paměti a mají pevnou velikost. |
Sekvence | Popisuje typ sekvence, který představuje logickou řadu hodnot; jednotlivé hodnoty se počítají pouze podle potřeby. |
Záznamy | Popisuje typ záznamu, malou agregaci pojmenovaných hodnot. |
Rozlišovaná sjednocení | Popisuje diskriminovaný typ sjednocení, typ, jehož hodnoty mohou být libovolnou ze sady možných typů. |
Functions | Popisuje hodnoty funkcí. |
Třídy | Popisuje typ třídy, typ objektu, který odpovídá referenčnímu typu .NET. Typy tříd mohou obsahovat členy, vlastnosti, implementovaná rozhraní a základní typ. |
Struktury | Popisuje struct typ objektu, který odpovídá typu hodnoty .NET. Typ struct obvykle představuje malou agregaci dat. |
Rozhraní | Popisuje typy rozhraní, což jsou typy, které představují sadu členů, které poskytují určité funkce, ale neobsahují žádná data. Aby byl užitečný typ rozhraní, musí být implementován typem objektu. |
Delegáti | Popisuje typ delegáta, který představuje funkci jako objekt. |
Výčty | Popisuje typy výčtu, jejichž hodnoty patří do sady pojmenovaných hodnot. |
Atributy | Popisuje atributy, které slouží k určení metadat pro jiný typ. |
Typy výjimek | Popisuje výjimky, které určují informace o chybě. |