Типы языка F#
В этом разделе описаны типы, которые используются в языке F#, и то, как типы в F# именуются и описываются.
Типы F#. Сводка
Некоторые типы считаются типами-примитивами, например логический тип bool, целочисленные типы и типы с плавающей запятой различных размеров, в том числе типы для байтов и символов.Эти типы описываются в разделе Типы-примитивы (F#).
Другие типы, встроенные в язык, включают кортежи, списки, массивы, последовательности, записи и размеченные объединения.Если у вас есть опыт программирования на других языках .NET, и теперь вы изучаете F#, прочтите раздел для каждого из типов.Ссылки на дополнительную информацию по типам можно найти в подразделе Связанные темы этого раздела.Типы, специфичные для языка F#, поддерживают стили программирования, что распространено для языков функционального программирования.Многие из этих типов имеют связанные модули в библиотеке F#, которые поддерживают распространенные операции с этими типами.
Тип функции содержит сведения о типах параметров и возвращаемом типе.
Платформа .NET Framework является источником типов объектов, интерфейсов, делегатов и других типов.Пользователь может определить собственные типы объектов, как в любом другом языке .NET.
Также F# позволяет определять псевдонимы, которые называются сокращениями типов и являются альтернативными именами типов.Сокращения типов можно использовать, когда тип может измениться в будущем и вам хотелось бы избежать изменения кода, который зависит от типа.Еще один вариант использования сокращения типов — указание "говорящего" имени типа, которое сделает код более понятным..
F# предоставляет полезные коллекции типы, созданные с использованием функционального программирования в виду.С помощью этих типов коллекций помогает писать код, который является более функциональным стилем.Дополнительные сведения см. в разделе Типы коллекций F#.
Синтаксис типов
В языке F# часто приходится писать имена типов.Каждый тип имеет синтаксическую форму, которая используется в аннотациях типов, объявлениях абстрактных методов, объявлениях делегатов, сигнатурах и других конструкциях.При объявлении новой программной конструкции в интерпретаторе, интерпретатор печатает имя конструкции и синтаксис ее типа.Синтаксис может быть всего лишь идентификатором для пользовательского типа или встроенным идентификатором, например int или string, но для более сложных типов синтаксис более сложный.
В следующей таблице приведены аспекты синтаксиса типов для типов F#.
Тип |
Синтаксис типа |
Примеры |
---|---|---|
тип-примитив |
type-name |
int float string |
агрегатный тип (класс, структура, объединение, запись, перечисление и т.д.) |
type-name |
System.DateTime Color |
сокращение типа |
type-abbreviation-name |
bigint |
полный тип |
namespaces.type-name или modules.type-name или namespaces.modules.type-name |
System.IO.StreamWriter |
Массив |
type-name[] или Массив type-name |
int[] array<int> int array |
двумерный массив |
type-name[,] |
int[,] float[,] |
трехмерный массив |
type-name[,,] |
float[,,] |
кортеж |
type-name1 * type-name2 ... |
Например, (1,'b',3) имеет тип int * char * int |
универсальный тип. |
type-parametergeneric-type-name или generic-type-name<type-parameter-list> |
'a list list<'a> Dictionary<'key, 'value> |
сконструированный тип (универсальный тип с определенным аргументом типа) |
type-argumentgeneric-type-name или generic-type-name<type-argument-list> |
int option string list int ref option<int> list<string> ref<int> Dictionary<int, string> |
функциональный тип с одним параметром |
parameter-type1 -> return-type |
Функция, которая принимает значения int и string, и возвращает строку int -> string типа. |
функциональный тип с несколькими параметрами |
parameter-type1 -> parameter-type2 -> ...-> return-type |
Функция, которая принимает int и float, а возвращает строку string типа int -> float -> string |
функция более высокого порядка как параметр |
(function-type) |
List.map имеет тип ('a -> 'b) -> 'a list -> 'b list |
delegate |
делегат типа function-type |
delegate of unit -> int |
гибкий тип |
#type-name |
#System.Windows.Forms.Control #seq<int> |
Связанные разделы
Раздел |
Описание |
---|---|
Описывает встроенные простые типы, такие как целочисленные типы, логический тип и символьные типы. |
|
Описывает тип unit с одним значением и обозначением (); эквивалент void в языке C# и Nothing в Visual Basic. |
|
Описывает тип кортежа — тип, состоящий из связанных значений любого типа, объединенных в пары, тройки, четверки т.д. |
|
Описывает тип option — тип, который может иметь значение или быть пустым. |
|
Описывает списки, которые являются упорядоченной последовательностью элементов одного типа, элементы нельзя менять местами. |
|
Описывает массивы, которые представляют собой упорядоченные наборы элементов одного типа, которые имеют фиксированный размер, которые можно менять местами и которые занимают определенный блок памяти. |
|
Описывает тип последовательности, который представляет логический ряд значений; отдельные значения вычисляются по мере необходимости. |
|
Описывает тип записи — небольшой набор именованных значений. |
|
Описывает тип размеченного объединения, тип, значения которого могут быть любыми из набора возможных типов. |
|
Описывает функциональные значения. |
|
Описывает тип класса — тип объекта, соответствующий ссылочному типу .NET.Типы класса могут содержать члены, свойства, реализованные интерфейсы и базовый тип. |
|
Описывает тип struct — тип объекта, соответствующий типу значения .NET.Тип struct обычно представляет небольшой набор данных. |
|
Описывает типы интерфейса, которые представляют набор членов, предоставляющих определенную функциональность, но не содержат данных.Чтобы тип интерфейса был функциональным, он должен реализовываться типом объекта. |
|
Описывает тип делегата, который представляет функцию как объект. |
|
Описывает типы перечисления, значения которых принадлежат набору именованных значений. |
|
Описывает атрибуты, которые служат для задания метаданных для другого типа. |
|
Описывает исключения, которые задают сведения об ошибке. |