Справочник по символам и операторам

В этой статье приведены таблицы с кратким описанием символов и операторов, используемых в F#. Некоторые из них приводятся несколько раз и используются в разных ролях.

Символы комментариев, директив компилятора и атрибутов

В следующей таблице перечислены символы, связанные с комментариями, директивами компиляторами и атрибутами.

Символ или оператор Ссылки Описание:
(*...*) Разделяет комментарий, который может занимать несколько строк.
// Обозначает начало однострочного комментария.
/// Документация XML Обозначает XML-комментарий.
# Директивы компилятора Выступает как префикс директивы препроцессора или компилятора.
[<...>] Атрибуты Разделяет атрибут.

Символы строк и идентификаторов

В следующей таблице перечислены символы, связанные со строками.

Символ или оператор Ссылки Описание:
" Строки Разделяет текстовую строку.
@" Строки Запускает буквальную текстовую строку, которая может содержать символы обратной косой черты и другие знаки.
""" Строки Разделяет текстовую строку, заключенную в тройные кавычки, которая может содержать символы обратной косой черты, двойные кавычки и другие знаки.
$" Интерполированные строки Начинает интерполированную строку.
' Литералы Разделяет односимвольный литерал.
``...`` Разделяет идентификатор, который в противном случае не будет допустимым идентификатором, например ключевое слово языка.
\ Строки Указывает на пропуск следующего символа; используется в символьных и строковых литералах.

Арифметические операторы

В следующей таблице перечислены арифметические операторы.

Символ или оператор Ссылки Описание:
+ Арифметические операторы
  • При использовании в качестве бинарного оператора складывает левую и правую части.
  • При использовании в качестве унарного оператора обозначает положительное количество. (Формально выдает то же значение без изменения знака.)
- Арифметические операторы
  • При использовании в качестве бинарного оператора вычитает из левой части правую.
  • При использовании в качестве унарного оператора выполняет операцию отрицания.
* Арифметические операторы

Кортежи

Единицы измерения
  • При использовании в качестве бинарного оператора перемножает левую и правую части.
  • В типах указывает на спаривание в кортеже.
  • Используется в единицах типов измерения.
/ Арифметические операторы

Единицы измерения
  • Делит левую часть (делимое) на правую часть (делитель).
  • Используется в единицах типов измерения.
% Арифметические операторы Позволяет вычислить целочисленный остаток.
** Арифметические операторы Вычисляет операцию возведения в степень (x ** y означает x в степени y).

Операторы сравнения

В следующей таблице перечислены операторы сравнения.

Символ или оператор Ссылки Описание:
< Арифметические операторы Вычисляет значение операции "меньше чем".
<> Арифметические операторы Возвращает значение true, если левая часть не равна правой части; в противном случае возвращает значение false.
<= Арифметические операторы Возвращает значение true, если левая часть меньше или равна правой части; в противном случае возвращает значение false.
= Арифметические операторы Возвращает значение true, если левая часть равна правой части; в противном случае возвращает значение false.
> Арифметические операторы Возвращает значение true, если левая часть больше правой части; в противном случае возвращает значение false.
>= Арифметические операторы Возвращает значение true, если левая часть больше или равна правой части. В противном случае возвращает значение false.

Логические операторы

В следующей таблице перечислены арифметические и логические символы и операторы.

Символ или оператор Ссылки Описание:
&& Логические операторы Вычисляет значение логической операции И.
|| Логические операторы Вычисляет значение логической операции ИЛИ.

битовые операторы;

В следующей таблице перечислены битовые операторы.

Символ или оператор Ссылки Описание:
&&& Битовые операторы Вычисляет значение побитовой операции И.
<<< Битовые операторы Сдвигает биты в количестве в левой части влево на количество бит, указанное в правой части.
>>> Битовые операторы Сдвигает биты в количестве в левой части влево на количество позиций, указанное в правой части.
^^^ Битовые операторы Вычисляет значение операции побитового исключающего ИЛИ.
||| Битовые операторы Вычисляет значение побитовой операции ИЛИ.
~~~ Битовые операторы Вычисляет значение операции побитового НЕ.

Символы и операторы функций

В следующей таблице перечислены операторы и символы, связанные с функциями.

Символ или оператор Ссылки Описание:
-> Функции В выражениях функций отделяет шаблон ввода от выходного выражения.
|> Функции Передает результат левой части в функцию в правой части (оператор прямого конвейера).
||> ( || ) < 'T 1, л 2, функция U > Передает кортеж из двух аргументов в левой части в функцию в правой части.
|||> ( ||| ) < 'T 1, е 2, 't 3, функция U > Передает кортеж из трех аргументов в левой части в функцию в правой части.
>> Функции Объединяет две функции (оператор прямого соединения).
<< Функции Объединяет две функции в обратном порядке. Вторая функция выполняется первой (оператор обратного соединения).
<| Функции Передает результат выражения в правой части в функцию левой части (оператор обратного конвейера).
<|| ( || )<' T1, 'T 2, "U > ", функция Передает кортеж из двух аргументов в правой части в функцию в левой части.
<||| ( ||| )<' T1, 'T 2, No 3, функция U > Передает кортеж из трех аргументов в правой части в функцию в левой части.

Символы и операторы типов

В следующей таблице перечислены символы, связанные с цитированием кода и проверками типа.

Символ или оператор Ссылки Описание:
-> Функции В типах функций разделяет аргументы и возвращаемые значения, а также предоставляет (yield) результат в выражениях последовательности.
: Функции В аннотации типа отделяет имя параметра или члена от его типа.
:> Приведение и преобразование Преобразует тип в тип, находящийся на более высоком уровне иерархии.
:? Выражения match Возвращает true, если значение соответствует указанному типу (в том числе и подтипу). В противном случае возвращает false (оператор проверки типа).
:?> Приведение и преобразование Преобразует тип в тип, находящийся на более низком уровне иерархии.
# Гибкие типы При использовании с типом указывает гибкий тип, который относится к типу или любому его производному типу.
' Автоматическое обобщение Указывает параметр универсального типа.
<...> Автоматическое обобщение Разделяет параметры типа.
^ Статически разрешаемые параметры типов

Строки
  • Задает параметры типа, которые должны разрешаться во время компиляции, а не во время выполнения.
  • Объединяет строки.
{} Класс или запись При использовании с type ключевым словом разделяет класс или запись. Тип является классом при объявлении членов или class при использовании ключевого слова. В противном случае это запись.
{||} Анонимная запись Обозначает анонимную запись

Символы, используемые в выражениях поиска и среза элементов

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

Символ или оператор Ссылки Описание:
. Члены Обращается к члену и отделяет индивидуальные имена в полном имени.
[...] или .[...] Массивы

Индексированные свойства

Выражения среза
Выполняет индексирование в массив, строку или коллекцию либо создает срез коллекции.

Символы, используемые в выражениях и шаблонах кортежей, списков, массивов, единиц

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

Символ или оператор Ссылки Описание:
( ) Тип Unit Представляет одно значение типа единицы.
, Кортежи Отделяет элементы кортежа или параметры типа.
:: Списки

Выражения match
  • Создает список. Элемент в левой части добавляется в начало списка в правой части.
  • Используется в сопоставлениях с шаблоном для отделения частей списка.
@ Списки Объединяет два списка.
[...] Списки Разделяет элементы списка.
[|...|] Массивы Разделяет элементы массива.

Символы, используемые в императивных выражениях

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

Символ или оператор Ссылки Описание:
<- Значения Присваивает значение переменной.
; Подробный синтаксис

Отделяет выражения (в основном используется в подробном синтаксисе). Также разделяет элементы списка или поля записи.

Дополнительные символы, используемые в последовательностях и вычислительных выражениях

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

Символ или оператор Ссылки Описание:
-> Последовательности Предоставляет выражение (в выражениях последовательности) эквивалентно ключевому слову do yield.
! Выражения вычисления Находясь после ключевого слова, указывает измененное поведение ключевого слова с учетом вычислительного выражения.

Дополнительные символы для шаблонов сопоставления

В следующей таблице перечислены символы, связанные с сопоставлением шаблонов.

Символ или оператор Ссылки Описание:
-> Выражения match Используется в выражениях сопоставления.
& Выражения match
  • Вычисляет адрес изменяемого значения, используется при взаимодействии с другими языками.
  • Используется в шаблонах И.
_ Выражения match

Универсальные шаблоны
  • Обозначает шаблон с подстановочными знаками.
  • Задает анонимный универсальный параметр.
| Выражения match Разделяет отдельные случаи соответствия, отдельные случаи размеченного объединения и значения перечисления.

Дополнительные символы для объявлений

В следующей таблице приведены символы, относящиеся к объявлениям.

Символ или оператор Ссылки Описание:
(|...|) Активные шаблоны Отделяет имя активного шаблона. Также называются скобками с вертикальной чертой.
? Параметры и аргументы Задает необязательный аргумент.
~~ Перегрузка операторов Используется для объявления перегрузки для оператора унарного отрицания.
~- Перегрузка операторов Используется для объявления перегрузки для оператора унарного минуса.
~+ Перегрузка операторов Используется для объявления перегрузки для оператора унарного плюса.

Дополнительные символы, используемые при цитировании

В следующей таблице перечислены символы, связанные с цитированием кода.

Символ или оператор Ссылки Описание:
<@...@> Цитирование кода Разделяет типизированную цитату кода.
<@@...@@> Цитирование кода Разделяет нетипизированную цитату кода.
% Цитирование кода Используется для объединения выражений в типизированные цитаты кода.
%% Цитирование кода Используется для объединения выражений в нетипизированные цитаты кода.

Динамические операторы поиска

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

Символ или оператор Ссылки Описание:
? Используется как оператор для вызова динамических методов и свойств.
? ... <- ... Используется как оператор для настройки динамических свойств.

Операторы, допускающие значения NULL, в запросах

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

Символ или оператор Ссылки Описание:
%? Операторы, допускающие значение NULL Позволяет вычислить целочисленный остаток, если правая часть является типом, допускающим значение NULL.
*? Операторы, допускающие значение NULL Перемножает левую и правую части, если правая часть является типом, допускающим значение NULL.
+? Операторы, допускающие значение NULL Складывает левую и правую части, если правая часть является типом, допускающим значение NULL.
-? Операторы, допускающие значение NULL Вычитает правую часть из левой, если правая часть является типом, допускающим значение NULL.
/? Операторы, допускающие значение NULL Делит левую часть на правую, если правая часть является типом, допускающим значение NULL.
<? Операторы, допускающие значение NULL Вычисляет значение операции "меньше чем", если правая часть является типом, допускающим значение NULL.
<>? Операторы, допускающие значение NULL Вычисляет значение операции "не равно", если правая часть является типом, допускающим значение NULL.
<=? Операторы, допускающие значение NULL Вычисляет значение операции "меньше или равно", если правая часть является типом, допускающим значение NULL.
=? Операторы, допускающие значение NULL Вычисляет значение операции "равно", если правая часть является типом, допускающим значение NULL.
>? Операторы, допускающие значение NULL Позволяет вычислить значение операции "больше чем", если правая часть является типом, допускающим значение NULL.
>=? Операторы, допускающие значение NULL Вычисляет значение операции "больше чем или равно", если правая часть является типом, допускающим значение NULL.
?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/ Операторы, допускающие значение NULL Эквивалент соответствующих операторов без суффикса ?, где тип, допускающий значение NULL, находится слева.
>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /? Операторы, допускающие значение NULL Эквивалент соответствующих операторов без суффикса ?, где тип, допускающий значение NULL, находится справа.
?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/? Операторы, допускающие значение NULL Эквивалент соответствующих операторов без окружающих вопросительных знаков, где обе стороны являются типами, допускающими значение NULL.

Операторы ссылочных ячеек (нерекомендуемые)

В следующей таблице перечислены символы, связанные со ссылочными ячейками. Начиная с F# 6, при использовании этих операторов создаются сообщения с рекомендациями. Дополнительные сведения см. в статье о сообщениях с рекомендациями, создаваемых с помощью операторов ссылочных ячеек.

Символ или оператор Ссылки Описание:
! Ссылочные ячейки Разыменовывает ссылочную ячейку.
:= Ссылочные ячейки Назначает значение ссылочной ячейке.

Приоритет операторов

В следующей таблице указана очередность применения операторов и других ключевых слов выражений для F# (в порядке возрастания приоритета). Также, когда это возможно, указана ассоциативность.

Оператор Ассоциативность
as Правый
when Правый
| (конвейер) Левый
; Правый
let Неассоциативный
function, fun, match, try Неассоциативный
if Неассоциативный
not Правый
-> Правый
:= Правый
, Неассоциативный
or, || Левый
&, && Левый
:>, :?> Правый
<<, >>, = , |=, &|, & ,$

(включая <<<, >>>, |||, &&&)
Левый
^^

(включая ^^^)
Правый
:: Правый
:? Не ассоциативен
--, ++ Применяется к инфиксному использованию этих символов
**, //, %% Левый
**** Правый
f x (применение функции)

(включая lazy x, assert x)
Левый
| (соответствие шаблону) Правый
операторы префикса ( ++, --, % , %% , & , && , !%, ~%%) Левый
. Левый
f(x) Левый
f<f<> Левый

F# поддерживает перегрузку пользовательских операторов. Это значит, что пользователь может определять собственные операторы. В предыдущей таблице op может быть любой допустимой (возможно, пустой) последовательностью символов операторов, встроенных или пользовательских. Таким образом, этой таблицей можно пользоваться, чтобы определить, какую последовательность символов использовать для пользовательского оператора с целью достижения нужного уровня приоритета. Начальные символы . игнорируются, когда компилятор определяет приоритет.

См. также