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