Typy F#

W tym temacie opisano typy używane w języku F# oraz sposób, w jaki typy F# są nazwane i opisane.

Podsumowanie typów języka F#

Niektóre typy są uważane za typy pierwotne, takie jak typ logiczny oraz typy bool całkowite i zmiennoprzecinkowe o różnych rozmiarach, które obejmują typy bajtów i znaków. Te typy są opisane w temacie Typy pierwotne.

Inne typy wbudowane w język obejmują krotki, listy, tablice, sekwencje, rekordy i związki dyskryminujące. Jeśli masz doświadczenie z innymi językami .NET i uczysz się języka F#, przeczytaj tematy dla każdego z tych typów. Te typy specyficzne dla języka F# obsługują style programowania, które są wspólne dla języków programowania funkcjonalnego. Wiele z tych typów ma skojarzone moduły w bibliotece języka F#, które obsługują typowe operacje na tych typach.

Typ funkcji zawiera informacje o typach parametrów i typie zwracanym.

.NET Framework jest źródłem typów obiektów, typów interfejsów, typów delegatów i innych. Możesz zdefiniować własne typy obiektów tak samo jak w dowolnym innym języku platformy .NET.

Ponadto kod F# może definiować aliasy, które są nazwane skrótami typów, które są alternatywnymi nazwami typów. Możesz użyć skrótów typów, gdy typ może ulec zmianie w przyszłości i chcesz uniknąć zmiany kodu, który zależy od typu. Możesz też użyć skrótu typu jako przyjaznej nazwy dla typu, który może ułatwić odczytywanie i zrozumienie kodu.

Język F# udostępnia przydatne typy kolekcji zaprojektowane z myślą o programowaniu funkcjonalnym. Użycie tych typów kolekcji ułatwia pisanie kodu, który jest bardziej funkcjonalny w stylu. Aby uzyskać więcej informacji, zobacz F# Collection Types (Typy kolekcji języka F#).

Składnia typów

W kodzie języka F# często trzeba zapisywać nazwy typów. Każdy typ ma formę składniową i używasz tych form składniowych w adnotacjach typu, deklaracjach metody abstrakcyjnej, deklaracjach delegatów, podpisach i innych konstrukcjach. Za każdym razem, gdy deklarujesz nową konstrukcję programu w interpreterze, interpreter wyświetla nazwę konstrukcji i składnię dla jego typu. Ta składnia może być tylko identyfikatorem typu zdefiniowanego przez użytkownika lub wbudowanym identyfikatorem, takim jak dla int lub string, ale w przypadku bardziej złożonych typów składnia jest bardziej złożona.

W poniższej tabeli przedstawiono aspekty składni typu dla typów języka F#.

Typ Składnia typów Przykłady
typ pierwotny nazwa-typu int

float

string
typ agregacji (klasa, struktura, unia, rekord, wyliczenie itd.) nazwa-typu System.DateTime

Color
skrót typu nazwa-skrót-typu bigint
w pełni kwalifikowany typ namespaces.type-name

lub

modules.type-name

lub

namespaces.modules.type-name
System.IO.StreamWriter
tablica type-name[] lub

tablica nazw typów
int[]

array<int>

int array
tablica dwuwymiarowa type-name[,] int[,]

float[,]
tablica trójwymiarowa type-name[,,] float[,,]
tuple type-name1 * type-name2 ... Na przykład ma (1,'b',3) typ int * char * int
typ ogólny type-parametergeneric-type-name

lub

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

list<'a>

Dictionary<'key, 'value>
typ skonstruowany (typ ogólny, który ma podany określony argument typu) type-argumentgeneric-type-name

lub

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

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>
typ funkcji, który ma jeden parametr parametr-type1 ->return-type Funkcja, która przyjmuje int element i zwraca string typ, ma typ int -> string
typ funkcji, który ma wiele parametrów parametr-type1 ->parameter-type2 -> ... ->return-type Funkcja, która przyjmuje int element i float i zwraca string typ, int -> float -> string
funkcja wyższej kolejności jako parametr (typ funkcji) List.map ma typ ('a -> 'b) -> 'a list -> 'b list
delegate delegat typu funkcji delegate of unit -> int
typ elastyczny #nazwa-typu #System.Windows.Forms.Control

#seq<int>
Temat opis
Typy pierwotne Opisuje wbudowane proste typy, takie jak typy całkowite, typ logiczny i typy znaków.
Typ jednostki unit Opisuje typ, typ, który ma jedną wartość i jest wskazywany przez (); odpowiednik void w języku C# i Nothing w Visual Basic.
Krotki Opisuje typ krotki, typ składający się ze skojarzonych wartości dowolnego typu zgrupowanych w parach, potrójnych, czteroosobowych itd.
Opcje Opisuje typ opcji, typ, który może mieć wartość lub być pusty.
Listy Opisuje listy, które są uporządkowane, niezmienne serie elementów tego samego typu.
Tablice Opisuje tablice, które są uporządkowanymi zestawami modyfikowalnych elementów tego samego typu, które zajmują ciągły blok pamięci i mają stały rozmiar.
Sekwencje Opisuje typ sekwencji, który reprezentuje logiczną serię wartości; poszczególne wartości są obliczane tylko w razie potrzeby.
Rekordy Opisuje typ rekordu, małą agregację nazwanych wartości.
Sumy rozłączne Opisuje typ unii dyskryminowanej, typ, którego wartości mogą być jednym z zestawów możliwych typów.
Funkcje Opisuje wartości funkcji.
Klasy Opisuje typ klasy, typ obiektu, który odpowiada typowi odwołania platformy .NET. Typy klas mogą zawierać elementy członkowskie, właściwości, zaimplementowane interfejsy i typ podstawowy.
Struktury struct Opisuje typ obiektu, który odpowiada typowi wartości platformy .NET. Typ struct zwykle reprezentuje małą agregację danych.
Interfejsy Opisuje typy interfejsów, które są typami reprezentującymi zestaw elementów członkowskich zapewniających pewne funkcje, ale które nie zawierają żadnych danych. Typ interfejsu musi być implementowany przez typ obiektu, aby był przydatny.
Delegaci Opisuje typ delegata, który reprezentuje funkcję jako obiekt.
Wyliczenia Opisuje typy wyliczenia, których wartości należą do zestawu nazwanych wartości.
Atrybuty Opisuje atrybuty, które są używane do określania metadanych dla innego typu.
Typy wyjątków Opisuje wyjątki, które określają informacje o błędzie.