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-parameter generic-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-argument generic-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> |
Tematy pokrewne
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. |