Справочник по языку F#
Этот раздел представляет собой справочник по языку F#, языку программирования с поддержкой множества парадигм, предназначенному для платформы .NET. Язык F# поддерживает модели функционального, объектно-ориентированного и императивного программирования.
Токены языка F#
В следующей таблице указаны справочные разделы, в которых приведены таблицы ключевых слов, символов и литералов, используемых в качестве токенов в F#.
Заголовок |
Описание |
---|---|
Приведены ссылки на сведения о всех ключевых словах языка F#. |
|
Представлена таблица символов и операторов, используемых в языке F#. |
|
Описываются синтаксис значений литералов в языке F# и способы указания сведений о типах для литералов F#. |
Концепции языка F#
В следующей таблице перечислены доступные справочные разделы, в которых описываются концепции языка.
Заголовок |
Описание |
---|---|
Функции — это основной элемент выполнения программы в любом языке программирования. Как и в других языках, функция в языке F# имеет имя, может иметь параметры и принимать аргументы, а также функция имеет тело. Язык F# также поддерживает конструкции функционального программирования, например обработку функций как значений, использование в выражениях неименованных функций, объединение функций для образования новых функций, каррированные функции и неявное определение функций посредством частичного применения аргументов функции. |
|
Описываются типы, используемые в языке F#, и правила их именования и описания. |
|
Описывается, как компилятор F# делает вывод о типах значений, переменных, параметров и возвращаемых значений. |
|
Описываются общие конструкции в языке F#. |
|
Описывается наследование, используемое для моделирования отношения "is-a" или подтипов в объектно-ориентированном программировании. |
|
Описываются члены типов объектов языка F#. |
|
Описывается поддержка языком определения параметров и передачи аргументов в функции, методы и свойства. Приводятся сведения о передаче по ссылке. |
|
Описывается перегрузка арифметических операторов в классе или типе записи, а также на глобальном уровне. |
|
Описывается поддержка преобразований типов в языке F#. |
|
Описывается управление доступом в языке F#. Под управление доступом понимается объявление клиентов, которые могут использовать определенные элементы программы, например типы, методы, функции и т. д. |
|
Описываются шаблоны, представляющие собой правила преобразования входных данных, которые используются во всем языке F# для сравнения данных с шаблоном, разложения данных на составные части или извлечения информации из данных различными способами. |
|
Описываются активные шаблоны. Активные шаблоны позволяют определять именованные разделы, с помощью которых подразделяются входные данные. Активные шаблоны можно использовать для разложения данных на составные части настраиваемым способом для каждого раздела. |
|
Описывается выражение assert, представляющее собой функцию отладки, которую можно использовать для тестирования выражения. В случае отрицательного результата тестирования в режиме отладки утверждение создает системное диалоговое окно ошибки. |
|
Приводятся сведения о поддержке обработки исключений в языке F#. |
|
Описываются атрибуты, позволяющие применять метаданные к конструкции программирования. |
|
Описываются ключевые слова use и using, которые могут управлять инициализацией и освобождением ресурсов. |
|
Описывается поддержка пространств имен в языке F#. Пространство имен предоставляет возможность организовать код в области связанной функциональности, позволяя присоединить имя к группе элементов программы. |
|
Описываются модули. Модуль F# — это группирование кода F#, например значений, типов и значений функций, в программе на языке F#. Группирование кода в модулях помогает не разрывать связанный код и избегать конфликтов имен в программе. |
|
Описывается действие ключевого слова open. Объявление импорта указывает модуль или пространство имен, на элементы которого можно ссылаться без использования полного имени. |
|
Описываются сигнатуры и файлы сигнатур. В файле сигнатур содержатся сведения об открытых сигнатурах ряда элементов программы на языке F#, таких как типы, пространства имен и модули. Файл сигнатур можно использовать для указания доступности этих элементов программы. |
|
Описывается поддержка создания файлов документации для комментариев в XML-документах, называемых также комментариями с тремя символами косой черты. Можно создать документацию из комментариев кода в языке F# точно так же, как в других языках платформы .NET. |
|
Описывается синтаксис конструкций F#, когда упрощенный синтаксис не разрешается. На подробный синтаксис указывает директива #light "off" в верхней части файла кода. |
Типы языка F#
В следующей таблице перечислены доступные справочные разделы, в которых описываются типы, поддерживаемые языком F#.
Заголовок |
Описание |
---|---|
Описываются значения, являющиеся постоянными величинами, которые имеют конкретный тип; значениями могут быть целые числа или числа с плавающей запятой, знаки или текст, списки, последовательности, массивы, кортежи, размеченные объединения, записи, типы классов или значения функций. |
|
Описываются основные простые типы, используемые в языке F#. Указываются также соответствующие типы .NET и минимальное и максимальное значения для каждого типа. |
|
Описывается тип unit, который указывает на отсутствие конкретного значения; тип unit имеет единственное значение, которое выступает в качестве заполнителя, когда не существует другого значения или оно не требуется. |
|
Описываются строки в языке F#. Тип string представляет постоянный текст в виде последовательности символов Юникода. Тип string — это псевдоним для типа String платформы .NET Framework. |
|
Описываются кортежи, представляющие собой группировки неименованных, но упорядоченных значений, возможно, различных типов. |
|
Описываются списки. Список в языке F# — это упорядоченный, неизменный ряд элементов одного типа. |
|
Описывается тип option. Тип option в языке F# используется, если значение может существовать или не существовать. Параметр типа option имеет базовый тип и может иметь значение этого типа или не иметь значения. |
|
Описываются последовательности. Последовательность — это логический ряд элементов одного типа. Отдельные элементы последовательности вычисляются только при необходимости, поэтому их фактическое количество может быть меньше указанного количества литералов. |
|
Описываются массивы. Массивы — это начинающиеся с нулевого индекса изменяемые последовательности элементов данных одного типа. |
|
Описываются записи. Записи представляют простые агрегаты именованных значений, дополнительно с членами. |
|
Описываются размеченные объединения, обеспечивающие поддержку значений, которые могут относиться к одному из множества именованных операторов case, возможно, с разными значениями и типами. |
|
Описываются перечисления, представляющие собой типы, которые имеют определенный набор именованных значений. Их можно использовать вместо литералов, чтобы сделать код удобнее для чтения и поддержки. |
|
Описываются ссылочные ячейки. Это места хранения, которые позволяют создавать изменяющиеся переменные с семантикой ссылок. |
|
Описываются аббревиатуры типов, представляющие собой переменные имена для типов. |
|
Описываются классы. Классы — это типы, представляющие объекты, которые могут иметь свойства, методы и события. |
|
Описываются структуры, представляющие собой компактные типы объектов, которые могут быть более эффективными, чем класс, для типов, имеющих небольшое количество данных и простое поведение. |
|
Описываются интерфейсы, определяющие наборы связанных членов, которые реализуются другими классами. |
|
Описываются абстрактные классы, т. е. классы, которые оставляют некоторые или все члены нереализованными, в результате чего реализации могут быть обеспечены производными классами. |
|
Описываются расширения типов, которые позволяют добавлять новые члены в ранее определенный тип объекта. |
|
Описываются гибкие типы. Заметка гибкого типа — это указание о том, что параметр, переменная или значение имеет тип, совместимый с указанным типом; совместимость определяется позицией в объектно-ориентированной иерархии классов или интерфейсов. |
|
Описываются делегаты, которые представляют вызов функции в качестве объекта. |
|
Описываются единицы измерения. Со значениями с плавающей запятой в языке F# могут быть связаны единицы измерения, которые обычно используются для указания длины, объема, массы и т. д. |
Выражения языка F#
В следующей таблице перечислены разделы, в которых описываются выражения языка F#.
Заголовок |
Описание |
---|---|
Описывается выражение if...then...else, которое обеспечивает выполнение различных ветвей кода, а также оценивает разные значения в зависимости от заданного логического выражения. |
|
Описывается выражение match, обеспечивающее управление ветвлением, которое осуществляется на основе сравнения выражения с рядом шаблонов. |
|
Описывается выражение for...to, используемое для выполнения итерации в цикле в пределах диапазона значений переменной цикла. |
|
Описывается выражение for...in, представляющее собой конструкцию для организации циклов, которая используется для выполнения итерации при соответствиях шаблона в перечислимой коллекции, например в выражении диапазона, в последовательности, списке, массиве или другой конструкции, поддерживающей перечисление. |
|
Описывается выражение while...do, используемое для выполнения итерации (в цикле), пока заданное условие теста истинно. |
|
Описываются выражения объектов, т. е. выражения, которые обеспечивают создание новых экземпляров динамически создаваемого анонимного типа объекта, основанного на существующем базовом типе, интерфейсе или ряде интерфейсов. |
|
Описываются отложенные вычисления, которые выполняются не немедленно, а только тогда, когда фактически требуется результат. |
|
Описываются вычислительные выражения языка F#, обеспечивающие удобный синтаксис для записи вычислений, которые можно упорядочивать и комбинировать с помощью конструкций и привязок потока управления. Они могут служить для обеспечения удобного синтаксиса компонентов Monad — концепции функционального программирования, которая может использоваться для управления данными, элементами управления и побочными эффектами в функциональных программах. Один из типов вычислительных выражений — асинхронный рабочий процесс — обеспечивает поддержку асинхронных и параллельных вычислений. Дополнительные сведения см. в разделе Асинхронные рабочие потоки (F#). |
|
Описываются асинхронные рабочие потоки — функция языка, позволяющая писать асинхронный код почти таким же образом, как обычно пишется синхронный код. |
|
Описываются кавычки кода. Это функция языка, позволяющая программно создавать выражения кода F# и работать с ними программным способом. |
Конструкции, поддерживаемые компилятором
В следующей таблице перечислены разделы, в которых описываются специальные конструкции, поддерживаемые компилятором.
Раздел |
Описание |
---|---|
Описываются директивы процессора и директивы компилятора. |
|
Описываются идентификаторы __LINE__, __SOURCE_DIRECTORY__ и __SOURCE_FILE__, представляющие собой встроенные значения, которые позволяют получать доступ к строке источника с определенным номером, каталогу и файлу с определенным именем в коде. |