Справочник по символам и операторам
В этой статье приведены таблицы с кратким описанием символов и операторов, используемых в 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 может быть любой допустимой (возможно, пустой) последовательностью символов операторов, встроенных или пользовательских. Таким образом, этой таблицей можно пользоваться, чтобы определить, какую последовательность символов использовать для пользовательского оператора с целью достижения нужного уровня приоритета. Начальные символы .
игнорируются, когда компилятор определяет приоритет.