Поделиться через


Типы языка 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>

Связанные разделы

Раздел

Описание

Типы-примитивы (F#)

Описывает встроенные простые типы, такие как целочисленные типы, логический тип и символьные типы.

Тип Unit (F#)

Описывает тип unit с одним значением и обозначением (); эквивалент void в языке C# и Nothing в Visual Basic.

Кортежи (F#)

Описывает тип кортежа — тип, состоящий из связанных значений любого типа, объединенных в пары, тройки, четверки т.д.

Параметры (F#)

Описывает тип option — тип, который может иметь значение или быть пустым.

Списки (F#)

Описывает списки, которые являются упорядоченной последовательностью элементов одного типа, элементы нельзя менять местами.

Массивы (F#)

Описывает массивы, которые представляют собой упорядоченные наборы элементов одного типа, которые имеют фиксированный размер, которые можно менять местами и которые занимают определенный блок памяти.

Последовательности (F#)

Описывает тип последовательности, который представляет логический ряд значений; отдельные значения вычисляются по мере необходимости.

Записи (F#)

Описывает тип записи — небольшой набор именованных значений.

Размеченные объединения (F#)

Описывает тип размеченного объединения, тип, значения которого могут быть любыми из набора возможных типов.

Функции (F#)

Описывает функциональные значения.

Классы (F#)

Описывает тип класса — тип объекта, соответствующий ссылочному типу .NET.Типы класса могут содержать члены, свойства, реализованные интерфейсы и базовый тип.

Структуры (F#)

Описывает тип struct — тип объекта, соответствующий типу значения .NET.Тип struct обычно представляет небольшой набор данных.

Интерфейсы (F#)

Описывает типы интерфейса, которые представляют набор членов, предоставляющих определенную функциональность, но не содержат данных.Чтобы тип интерфейса был функциональным, он должен реализовываться типом объекта.

Делегаты (F#)

Описывает тип делегата, который представляет функцию как объект.

Перечисления (F#)

Описывает типы перечисления, значения которых принадлежат набору именованных значений.

Атрибуты (F#)

Описывает атрибуты, которые служат для задания метаданных для другого типа.

Типы исключений (F#)

Описывает исключения, которые задают сведения об ошибке.