Справочник по языку F#F# Language Reference

Эта статья представляет собой справочник по языку программирования F#, который поддерживает несколько парадигм и предназначен для платформы .NET.This section is a reference for the F# language, a multi-paradigm programming language targeting .NET. Язык F# поддерживает функциональные, объектно-ориентированные и императивные модели программирования.The F# language supports functional, object-oriented, and imperative programming models.

Справочник по API библиотеки F# CoreF# Core Library API reference

Справочник по API библиотеки F# Core (FSharp.Core) содержит справочные материалы по всем пространствам имен, модулям, типам и функциям библиотеки F# Core.F# Core Library (FSharp.Core) API reference is the reference for all F# Core Library namespaces, modules, types, and functions.

Токены F#F# Tokens

Следующая таблица содержит справочные статьи, где приведены таблицы ключевых слов, символов и литералов, используемых в F# в качестве токенов.The following table shows reference articles that provide tables of keywords, symbols, and literals that are used as tokens in F#.

НазваниеTitle Описание:Description
Справочные сведения о ключевых словахKeyword Reference Содержит ссылки на сведения обо всех ключевых словах языка F#.Contains links to information about all F# language keywords.
Справочник символов и операторовSymbol and Operator Reference Содержит таблицу символов и операторов, которые используются в языке F#.Contains a table of symbols and operators that are used in the F# language.
ЛитералыLiterals Описывает синтаксис для литеральных значений в F# и способы указания сведений о типах для литералов F#.Describes the syntax for literal values in F# and how to specify type information for F# literals.

Основные понятия языка F#F# Language Concepts

Следующая таблица содержит статьи, где описаны основные понятия языка.The following table shows reference topics available that describe language concepts.

НазваниеTitle Описание:Description
ФункцииFunctions Функции являются основным элементом выполнения программы на любом языке программирования.Functions are the fundamental unit of program execution in any programming language. Как и в других языках, функция F# имеет имя, может иметь параметры и принимать аргументы, а также имеет тело.As in other languages, an F# function has a name, can have parameters and take arguments, and has a body. F# также поддерживает конструкции функционального программирования, например, обработку функций как значений, использование неименованных функций в выражениях, объединение функций для образования новых функций, каррированные функции и неявное определение функций посредством частичного применения аргументов функции.F# also supports functional programming constructs such as treating functions as values, using unnamed functions in expressions, composition of functions to form new functions, curried functions, and the implicit definition of functions by way of the partial application of function arguments.
Типы языка F#F# Types Описывает типы, которые используются в F#, а также способы их именования и описания.Describes the types that are used in F# and how F# types are named and described.
Вывод типаType Inference Описывает, как компилятор F# определяет типы значений, переменных, параметров и возвращаемых значений.Describes how the F# compiler infers the types of values, variables, parameters, and return values.
Автоматическое обобщениеAutomatic Generalization Описывает универсальные конструкции в F#.Describes generic constructs in F#.
НаследованиеInheritance Описывает наследование, которое применяется для моделирования отношения "is-a" — подтипирования — в объектно-ориентированном программировании.Describes inheritance, which is used to model the "is-a" relationship, or subtyping, in object-oriented programming.
ЧленыMembers Описывает элементы типов объектов F#.Describes members of F# object types.
Параметры и аргументыParameters and Arguments Описывает языковую поддержку для определения параметров и передачи аргументов в функции, методы и свойства.Describes language support for defining parameters and passing arguments to functions, methods, and properties. Содержит сведения о передаче по ссылке.It includes information about how to pass by reference.
Перегрузка операторовOperator Overloading Описывает перегрузку арифметических операторов в классе или типе записи, а также на глобальном уровне.Describes how to overload arithmetic operators in a class or record type, and at the global level.
Приведение и преобразованиеCasting and Conversions Описывает поддержку для преобразований типов в F#.Describes support for type conversions in F#.
Управление доступомAccess Control Описывает управление доступом в F#.Describes access control in F#. Управление доступом означает объявление того, какие именно клиенты могут использовать определенные элементы программы, например типы, методы, функции и т. д.Access control means declaring what clients are able to use certain program elements, such as types, methods, functions, and so on.
Соответствие шаблонуPattern Matching Описывает шаблоны, которые являются правилами для преобразования входных данных и используются во всем языке F#.Describes patterns, which are rules for transforming input data and are used throughout the F# language. Пользователь может сравнить данные с шаблоном, разбить данные на составляющие части или извлечь сведения из данных теми или иными способами.You can compare data with a pattern, decompose data into constituent parts, or extract information from data in various ways.
Активные шаблоныActive Patterns Описывает активные шаблоны.Describes active patterns. Активные шаблоны позволяют определять именованные разделы, на которые подразделяются входные данные.Active patterns enable you to define named partitions that subdivide input data. Активные шаблоны можно использовать для разложения данных в настраиваемом порядке для каждого раздела.You can use active patterns to decompose data in a customized manner for each partition.
Проверочные утвержденияAssertions Описывает выражение assert, являющееся функцией отладки, которую можно использовать для тестирования выражения.Describes the assert expression, which is a debugging feature that you can use to test an expression. При сбое в режиме отладки утверждение создает диалоговое окно системной ошибки.Upon failure in Debug mode, an assertion generates a system error dialog box.
Обработка исключенийException Handling Содержит сведения о поддержке обработки исключений в языке F#.Contains information about exception handling support in the F# language.
attributesattributes Описывает атрибуты, позволяющие применять метаданные к программным конструкциям.Describes attributes, which enable metadata to be applied to a programming construct.
Управление ресурсами: ключевое слово useResource Management: The use Keyword Описывает ключевые слова use и using, позволяющие управлять инициализацией и освобождением ресурсов.Describes the keywords use and using, which can control the initialization and release of resources
namespacesnamespaces Описывает поддержку пространств имен в F#.Describes namespace support in F#. С помощью пространства имен вы можете упорядочить код по областям соответствующей функциональности, подключив имя к группированию элементов программы.A namespace lets you organize code into areas of related functionality by enabling you to attach a name to a grouping of program elements.
МодулиModules Описывает модули.Describes modules. Модуль F# — это группирование кода F#, например значений, типов и значений функций, в программе F#.An F# module is a grouping of F# code, such as values, types, and function values, in an F# program. Код группирования в модулях объединяет связанный код и помогает избежать конфликтов имен в программе.Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.
Объявления импорта: ключевое слово openImport Declarations: The open Keyword Описывает работу open.Describes how open works. Объявление импорта указывает модуль или пространство имен, на элементы которого можно ссылаться без использования полного имени.An import declaration specifies a module or namespace whose elements you can reference without using a fully qualified name.
СигнатурыSignatures Описывает сигнатуры и их файлы.Describes signatures and signature files. В файле сигнатур содержатся сведения об открытых сигнатурах набора элементов программы на языке F#, таких как типы, пространства имен и модули.A signature file contains information about the public signatures of a set of F# program elements, such as types, namespaces, and modules. Файл сигнатур можно использовать для указания доступности этих элементов программы.It can be used to specify the accessibility of these program elements.
Документация XMLXML Documentation Описывает создание файлов документации для комментариев к XML-документам.Describes support for generating documentation files for XML doc comments, also known as triple slash comments. Документацию можно создавать из комментариев к коду в F#, так же как и в других языках .NET.You can produce documentation from code comments in F# as in other .NET languages.
Подробный синтаксисVerbose Syntax Описывает синтаксис для конструкций F#, когда упрощенный синтаксис отключен.Describes the syntax for F# constructs when lightweight syntax is not enabled. Подробный синтаксис указывается директивой #light "off" в верхней части файла кода.Verbose syntax is indicated by the #light "off" directive at the top of the code file.
Форматирование обычного текстаPlain Text Formatting Узнайте, как использовать sprintf и другое форматирование обычного текста в приложениях и сценариях F#.Learn how to use sprintf and other plain text formatting in F# applications and scripts.

Типы языка F#F# Types

Следующая таблица содержит статьи, где описаны типы, поддерживаемые языком F#.The following table shows reference topics available that describe types supported by the F# language.

НазваниеTitle Описание:Description
Значенияvalues Описывает значения, которые являются величинами, имеющими конкретный тип. Значения могут быть целыми числами или числами с плавающей запятой, символами или текстом, списками, последовательностями, массивами, кортежами, размеченными объединениями, записями, типами классов или значениями функции.Describes values, which are immutable quantities that have a specific type; values can be integral or floating point numbers, characters or text, lists, sequences, arrays, tuples, discriminated unions, records, class types, or function values.
Базовые типыBasic Types Описывает фундаментальные базовые типы, используемые в языке F#.Describes the fundamental basic types that are used in the F# language. Кроме того, указывает соответствующие типы .NET и минимальное и максимальное значения для каждого из них.It also provides the corresponding .NET types and the minimum and maximum values for each type.
Тип UnitUnit Type Описывает тип unit, который указывает на отсутствие конкретного значения. Тип unit имеет только одно значение, которое выступает в качестве заполнителя, если другое значение не существует или не требуется.Describes the unit type, which is a type that indicates the absence of a specific value; the unit type has only a single value, which acts as a placeholder when no other value exists or is needed.
СтрокиStrings Описывает строки в F#.Describes strings in F#. Тип string представляет неизменяемый текст в виде последовательности символов Юникода.The string type represents immutable text, as a sequence of Unicode characters. string — это псевдоним для System.String в .NET Framework.string is an alias for System.String in the .NET Framework.
КортежиTuples Описывает кортежи, представляющие собой группирования неименованных, но упорядоченных значений, которые могут иметь разные типы.Describes tuples, which are groupings of unnamed but ordered values of possibly different types.
Типы коллекций F#F# Collection Types Обзор типов функциональных коллекций F#, включая типы для массивов, списков, последовательностей (seq), карт и наборов.An overview of the F# functional collection types, including types for arrays, lists, sequences (seq), maps, and sets.
СпискиLists Описывает списки.Describes lists. В языке F# список — это упорядоченная, неизменная серия элементов одного типа.A list in F# is an ordered, immutable series of elements all of the same type.
ПараметрыOptions Описывает тип параметра.Describes the option type. Параметр в F# используется, когда значение может как существовать, так и не существовать.An option in F# is used when a value may or may not exist. Параметр имеет базовый тип и может содержать значение этого типа либо не содержать никакого значения.An option has an underlying type and may either hold a value of that type or it may not have a value.
ПоследовательностиSequences Описывает последовательности.Describes sequences. Последовательность — это логический ряд элементов одного типа.A sequence is a logical series of elements all of one type. Отдельные элементы последовательности вычисляются только при необходимости, поэтому представление может быть меньше указанного количества элементов литерала.Individual sequence elements are only computed if necessary, so the representation may be smaller than a literal element count indicates.
МассивыArrays Описывает массивы.Describes arrays. Массивы — это изменяемые последовательности элементов данных одного типа, имеющие фиксированный размер и индексируемые с нуля.Arrays are fixed-size, zero-based, mutable sequences of consecutive data elements, all of the same type.
ЗаписиRecords Описывает записи.Describes records. Записи представляют собой простые агрегаты именованных значений, которые могут иметь элементы.Records represent simple aggregates of named values, optionally with members.
Размеченные объединенияDiscriminated Unions Описывает размеченные объединения, обеспечивающие поддержку значений, которые могут представлять один из множества именованных вариантов, каждый из которых может иметь разные значения и типы.Describes discriminated unions, which provide support for values that may be one of a variety of named cases, each with possibly different values and types.
ПеречисленияEnumerations Описывает перечисления, которые являются типами, имеющими определенный набор именованных значений.Describes enumerations are types that have a defined set of named values. Их можно использовать вместо литералов, чтобы сделать код более понятным и простым в обслуживании.You can use them in place of literals to make code more readable and maintainable.
Ссылочные ячейкиReference Cells Описывает ссылочные ячейки, представляющие собой места хранения, которые позволяют создавать изменяющиеся переменные с семантикой ссылок.Describes reference cells, which are storage locations that enable you to create mutable variables with reference semantics.
Сокращенные обозначения типовType Abbreviations Описывает сокращенные формы типов, которые являются альтернативными именами типов.Describes type abbreviations, which are alternate names for types.
КлассыClasses Описывает классы, которые являются типами, представляющими объекты, которые могут иметь свойства, методы и события.Describes classes, which are types that represent objects that can have properties, methods, and events.
СтруктурыStructures Описывает структуры, представляющие собой компактный тип объекта, который может быть более эффективным, чем класс для типов, имеющих небольшое количество данных и простое поведение.Describes structures, which are compact object types that can be more efficient than a class for types that have a small amount of data and simple behavior.
ИнтерфейсыInterfaces Описывает интерфейсы, которые определяют наборы связанных элементов, реализуемых другими классами.Describes interfaces, which specify sets of related members that other classes implement.
Абстрактные классыAbstract Classes Описывает абстрактные классы, которые оставляют некоторые или все элементы нереализованными, чтобы реализации могли предоставляться производными классами.Describes abstract classes, which are classes that leave some or all members unimplemented, so that implementations can be provided by derived classes.
Расширения типовType Extensions Описывает расширения типов, которые позволяют добавлять новые элементы в ранее определенный тип объекта.Describes type extensions, which let you add new members to a previously defined object type.
Гибкие типыFlexible Types Описывает гибкие типы.Describes flexible types. Заметка с гибким типом указывает на то, что параметр, переменная или значение имеют тип, который совместим с указанным типом, где совместимость определяется положением в объектно ориентированной иерархии классов или интерфейсов.A flexible type annotation is an indication that a parameter, variable, or value has a type that is compatible with type specified, where compatibility is determined by position in an object-oriented hierarchy of classes or interfaces.
ДелегатыDelegates Описывает делегаты, которые представляют вызов функции в качестве объекта.Describes delegates, which represent a function call as an object.
Единицы измеренияUnits of Measure Описывает единицы измерения.Describes units of measure. Значения с плавающей запятой в языке F# могут иметь связанные единицы измерения, которые обычно используются для указания длины, объема, массы и т. д.Floating point values in F# can have associated units of measure, which are typically used to indicate length, volume, mass, and so on.
Поставщики типовType Providers Описывает поставщики типов и предоставляет ссылки на пошаговые инструкции по использованию встроенных поставщиков типов для доступа к базам данных и веб-службам.Describes type provides and provides links to walkthroughs on using the built-in type providers to access databases and web services.

Выражения F#F# Expressions

Следующая таблица содержит список статей, описывающих выражения F#.The following table lists topics that describe F# expressions.

НазваниеTitle Описание:Description
Условные выражения: if...then...elseConditional Expressions: if...then...else Описывает выражение if...then...else, которое выполняет различные ветви кода, а также дает разные значения при вычислении в зависимости от заданного логического выражения.Describes the if...then...else expression, which runs different branches of code and also evaluates to a different value depending on the Boolean expression given.
Выражения matchMatch Expressions Описывает выражение match, которое позволяет управлять ветвлением за счет сравнения выражения с набором шаблонов.Describes the match expression, which provides branching control that is based on the comparison of an expression with a set of patterns.
Циклы: выражение for...toLoops: for...to Expression Описывает выражение for...to, которое используется для циклической итерации по диапазону значений переменной цикла.Describes the for...to expression, which is used to iterate in a loop over a range of values of a loop variable.
Циклы: выражение for...inLoops: for...in Expression Описывает выражение for...in — циклическую конструкцию, которая используется для итерации по совпадениям с шаблоном в перечислимой коллекции, такой как выражение диапазона, последовательность, список, массив или другая конструкция, поддерживающая перечисление.Describes the for...in expression, a looping construct that is used to iterate over the matches of a pattern in an enumerable collection such as a range expression, sequence, list, array, or other construct that supports enumeration.
Циклы: выражение while...doLoops: while...do Expression Описывает выражение while...do, используемое для итеративного выполнения (выполнения в цикле), пока заданное условие теста истинно.Describes the while...do expression, which is used to perform iterative execution (looping) while a specified test condition is true.
Выражения объектаObject Expressions Описывает выражения объектов, формирующие новые экземпляры динамически создаваемого анонимного типа объекта, который основан на существующем базовом типе, интерфейсе или наборе интерфейсов.Describes object expressions, which are expressions that create new instances of a dynamically created, anonymous object type that is based on an existing base type, interface, or set of interfaces.
Отложенные выраженияLazy Expressions Описывает отложенные выражения, которые выполняются не сразу, а только тогда, когда возникает потребность в результате.Describes lazy expressions, which are computations that are not evaluated immediately, but are instead evaluated when the result is actually needed.
Выражения вычисленияComputation Expressions Описывает выражения вычисления в F#, обеспечивающие удобный синтаксис для записи вычислений, которые можно упорядочивать и комбинировать с помощью привязок и конструкций потока управления.Describes computation expressions in F#, which provide a convenient syntax for writing computations that can be sequenced and combined using control flow constructs and bindings. Они позволяют предоставить удобный синтаксис для компонентов функционального программирования monad, которые можно использовать для управления данными и побочными эффектами в функциональных программах.They can be used to provide a convenient syntax for monads, a functional programming feature that can be used to manage data, control, and side effects in functional programs. Один из типов выражений вычисления — асинхронный рабочий процесс — обеспечивает поддержку асинхронных и параллельных вычислений.One type of computation expression, the asynchronous workflow, provides support for asynchronous and parallel computations. Дополнительные сведения см. в статье Асинхронные рабочие потоки.For more information, see Asynchronous Workflows.
Асинхронные рабочие потокиAsynchronous Workflows Описывает асинхронные рабочие процессы — функцию языка, позволяющую писать асинхронный код практически аналогично синхронному.Describes asynchronous workflows, a language feature that lets you write asynchronous code in a way that is very close to the way you would naturally write synchronous code.
Цитирование кодаCode Quotations Описывает цитирование кода — функцию языка, позволяющую программно создавать выражения кода F# и работать с ними.Describes code quotations, a language feature that enables you to generate and work with F# code expressions programmatically.
Выражения запросовQuery Expressions Описывает выражения запросов — функцию языка, которая реализует LINQ для F# и позволяет составлять запросы к источнику данных или перечислимой коллекции.Describes query expressions, a language feature that implements LINQ for F# and enables you to write queries against a data source or enumerable collection.

Конструкции, поддерживаемые компиляторомCompiler-supported Constructs

Следующая таблица содержит список статей, где описаны специальные конструкции, поддерживаемые компилятором.The following table lists topics that describe special compiler-supported constructs.

РазделTopic ОписаниеDescription
Параметры компилятораCompiler Options Описывает параметры командной строки для компилятора F#.Describes the command-line options for the F# compiler.
Директивы компилятораCompiler Directives Описывает директивы процессора и компилятора.Describes processor directives and compiler directives.
Идентификаторы Source Line, File и PathSource Line, File, and Path Identifiers Описывает идентификаторы __LINE__, __SOURCE_DIRECTORY__ и __SOURCE_FILE__, представляющие собой встроенные значения, которые позволяют получить доступ к номеру исходной строки, каталогу и имени файла в коде.Describes the identifiers __LINE__, __SOURCE_DIRECTORY__, and __SOURCE_FILE__, which are built-in values that enable you to access the source line number, directory and file name in your code.