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


Справочник символов и операторов (F#)

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

Таблица символов и операторов

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

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

Ссылки

Описание

!

Ссылочные ячейки (F#)

Выражения вычисления (F#)

  • Разыменовывает ссылочную ячейку.

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

!=

Неприменимо.

  • Не используется в F#. Для операций неравенства используйте оператор <>.

"

Литералы (F#)

Строки (F#)

  • Разделяет текстовую строку.

"""

Строки (F#)

Разделяет буквальную текстовую строку. Отличается от @"..." тем, что можно указать символ кавычки с помощью одинарной кавычки в строке.

#

Директивы компилятора (F#)

Гибкие типы (F#)

  • Выступает как префикс директивы препроцессора или компилятора, например #light.

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

$

Дополнительные сведения недоступны.

  • Для внутреннего использования, применяется для определенных создаваемых компилятором имен переменных и функций.

%

Арифметические операторы (F#)

Цитирование кода (F#)

  • Вычисляет целочисленный модуль.

  • Используется для объединения выражений в типизированные цитаты кода.

%%

Цитирование кода (F#)

  • Используется для объединения выражений в нетипизированные цитаты кода.

%?

Операторы, допускающие значение NULL (F#)

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

&

Выражения match (F#)

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

  • Используется в шаблонах И.

&&

Логические операторы (F#)

  • Вычисляет значение логической операции И.

&&&

Побитовые операторы (F#)

  • Вычисляет значение побитовой операции И.

'

Литералы (F#)

Автоматическое обобщение (F#)

  • Разделяет односимвольный литерал.

  • Указывает параметр универсального типа.

``...``

Дополнительные сведения недоступны.

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

( )

Тип Unit (F#)

  • Представляет одно значение типа единицы.

(...)

Кортежи (F#)

Перегрузка операторов (F#)

  • Указывает порядок, в котором вычисляются выражения.

  • Разделяет кортеж.

  • Используется в определениях операторов.

(*...*)

  • Разделяет комментарий, который может занимать несколько строк.

(|...|)

Активные шаблоны (F#)

  • Разделяет активный шаблон. Также называется banana clips.

*

Арифметические операторы (F#)

Кортежи (F#)

Единицы измерения (F#)

  • При использовании в качестве бинарного оператора перемножает левую и правую части.

  • В типах указывает на спаривание в кортеже.

  • Используется в единицах типов измерения.

*?

Операторы, допускающие значение NULL (F#)

  1. Перемножает левую и правую части, если правая часть является типом, допускающим значение NULL.

**

Арифметические операторы (F#)

  • Вычисляет операцию возведения в степень (x ** y означает x в степени y).

+

Арифметические операторы (F#)

  • При использовании в качестве бинарного оператора складывает левую и правую части.

  • При использовании в качестве унарного оператора обозначает положительное количество. (Формально выдает то же значение без изменения знака.)

+?

Операторы, допускающие значение NULL (F#)

  1. Складывает левую и правую части, если правая часть является типом, допускающим значение NULL.

,

Кортежи (F#)

  • Отделяет элементы кортежа или параметры типа.

-

Арифметические операторы (F#)

  • При использовании в качестве бинарного оператора вычитает из левой части правую.

  • При использовании в качестве унарного оператора выполняет операцию отрицания.

-

Операторы, допускающие значение NULL (F#)

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

->

Функции (F#)

Выражения match (F#)

  • В типах функций разделяет аргументы и возвращаемые значения.

  • Получает результат выражения (в выражениях последовательности); эквивалент ключевому слову yield.

  • Используется в выражениях сопоставления

.

Члены (F#)

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

  • Обращается к члену и отделяет индивидуальные имена в полном имени.

  • Задает десятичный разделитель в числах с плавающей запятой.

..

Циклы: выражение for...in (F#)

  • Задает диапазон.

.. ..

Циклы: выражение for...in (F#)

  • Задает диапазон вместе с приращением.

.[...]

Массивы (F#)

  • Обращается к элементу массива.

/

Арифметические операторы (F#)

Единицы измерения (F#)

  • Делит левую часть (делимое) на правую часть (делитель).

  • Используется в единицах типов измерения.

/?

Операторы, допускающие значение NULL (F#)

  1. Делит левую часть на правую, если правая часть является типом, допускающим значение NULL.

//

  • Обозначает начало однострочного комментария.

///

Документация XML (F#)

  • Обозначает XML-комментарий.

:

Функции (F#)

  • В аннотации типа отделяет имя параметра или члена от его типа.

::

Списки (F#)

Выражения match (F#)

  • Создает список. Элемент в левой части добавляется в список в правой части.

  • Используется в сопоставлениях с шаблоном для отделения частей списка.

:=

Ссылочные ячейки (F#)

  • Назначает значение ссылочной ячейке.

:>

Приведение и преобразование (F#)

  • Преобразует тип в тип, находящийся на более высоком уровне иерархии.

:?

Выражения match (F#)

  • Возвращает true, если значение соответствует указанному типу; в противном случае возвращает false (оператор проверки типа).

:?>

Приведение и преобразование (F#)

  • Преобразует тип в тип, находящийся на более низком уровне иерархии.

;

Подробный синтаксис (F#)

Списки (F#)

Записи (F#)

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

  • Отделяет элементы списка.

  • Отделяет поля записи.

<

Арифметические операторы (F#)

  • Вычисляет значение операции "меньше чем".

<?

Операторы, допускающие значение NULL (F#)

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

<<

Функции (F#)

  • Объединяет две функции в обратном порядке. Вторая функция выполняется первой (оператор обратного соединения).

<<<

Побитовые операторы (F#)

  • Сдвигает биты в количестве в левой части влево на количество бит, указанное в правой части.

<-

Значения (F#)

  • Присваивает значение переменной.

<...>

Автоматическое обобщение (F#)

  • Разделяет параметры типа.

<>

Арифметические операторы (F#)

  • Возвращает значение true, если левая часть не равна правой части; в противном случае возвращает значение false.

<>?

Операторы, допускающие значение NULL (F#)

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

<=

Арифметические операторы (F#)

  • Возвращает значение true, если левая часть меньше или равна правой части; в противном случае возвращает значение false.

<=?

Операторы, допускающие значение NULL (F#)

  1. Вычисляет значение операции "меньше или равно", если правая часть является типом, допускающим значение NULL.

<|

Функции (F#)

  • Передает результат выражения в правой части в функцию левой части (оператор обратного конвейера).

<||

Функция Operators.( <|| )<'T1,'T2,'U> (F#)

  • Передает кортеж из двух аргументов в правой части в функцию в левой части.

<|||

Функция Operators.( <||| )<'T1,'T2,'T3,'U> (F#)

  • Передает кортеж из трех аргументов в правой части в функцию в левой части.

<@...@>

Цитирование кода (F#)

  • Разделяет типизированную цитату кода.

<@@...@@>

Цитирование кода (F#)

  • Разделяет нетипизированную цитату кода.

=

Арифметические операторы (F#)

  • Возвращает значение true, если левая часть равна правой части; в противном случае возвращает значение false.

=?

Операторы, допускающие значение NULL (F#)

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

==

Неприменимо.

  • Не используется в F#. Используйте = для операции равенства.

>

Арифметические операторы (F#)

  • Возвращает значение true, если левая часть больше правой части; в противном случае возвращает значение false.

>?

Операторы, допускающие значение NULL (F#)

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

>>

Функции (F#)

  • Объединяет две функции (оператор прямого соединения).

>>>

Побитовые операторы (F#)

  • Сдвигает биты в количестве в левой части влево на количество позиций, указанное в правой части.

>=

Арифметические операторы (F#)

  • Возвращает значение true, если правая часть больше или равна левой части; в противном случае возвращает значение false.

>=?

Операторы, допускающие значение NULL (F#)

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

?

Параметры и аргументы (F#)

  • Задает необязательный аргумент.

  • Используется как оператор для вызова динамических методов и свойств. Необходимо предоставить собственную реализацию.

? ... <- ...

Дополнительные сведения недоступны.

  • Используется как оператор для настройки динамических свойств. Необходимо предоставить собственную реализацию.

?>=, ?>, ?<=, ?<, ?=, ?<>, ?+, ?-, ?*, ?/

Операторы, допускающие значение NULL (F#)

  1. Эквивалент соответствующих операторов без префикса ?, где тип, допускающий значение NULL, находится слева.

>=?, >?, <=?, <?, =?, <>?, +?, -?, *?, /?

Операторы, допускающие значение NULL (F#)

  1. Эквивалент соответствующих операторов без суффикса ?, где тип, допускающий значение NULL, находится справа.

?>=?, ?>?, ?<=?, ?<?, ?=?, ?<>?, ?+?, ?-?, ?*?, ?/?

Операторы, допускающие значение NULL (F#)

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

@

Списки (F#)

Строки (F#)

  • Объединяет два списка.

  • При размещении перед строковым литералом, указывает, что строку следует интерпретировать буквально, без интерпретации escape-символов.

[...]

Списки (F#)

  • Разделяет элементы списка.

[|...|]

Массивы (F#)

  • Разделяет элементы массива.

[<...>]

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

  • Разделяет атрибут.

\

Строки (F#)

  • Указывает на пропуск следующего символа; используется в символьных и строковых литералах.

^

Статически разрешаемые параметры типа (F#)

Строки (F#)

  • Задает параметры типа, которые должны разрешаться во время компиляции, а не во время выполнения.

  • Объединяет строки.

^^^

Побитовые операторы (F#)

  • Вычисляет значение операции побитового исключающего ИЛИ.

_

Выражения match (F#)

Универсальные шаблоны (F#)

  • Обозначает шаблон с подстановочными знаками.

  • Задает анонимный универсальный параметр.

`

Автоматическое обобщение (F#)

  • Для внутреннего использования, указывает параметр универсального типа.

{...}

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

Записи (F#)

  • Разделяет выражения последовательности и вычислительные выражения.

  • Используется в определениях записей.

|

Выражения match (F#)

  • Разделяет отдельные случаи соответствия, отдельные случаи размеченного объединения и значения перечисления.

||

Логические операторы (F#)

  • Вычисляет значение логической операции ИЛИ.

|||

Побитовые операторы (F#)

  • Вычисляет значение побитовой операции ИЛИ.

|>

Функции (F#)

  • Передает результат левой части в функцию в правой части (оператор прямого конвейера).

||>

Функция Operators.( ||> )<'T1,'T2,'U> (F#)

  • Передает кортеж из двух аргументов в левой части в функцию в правой части.

|||>

Функция Operators.( |||> )<'T1,'T2,'T3,'U> (F#)

  1. Передает кортеж из трех аргументов в левой части в функцию в правой части.

~~

Перегрузка операторов (F#)

  • Используется для объявления перегрузки для оператора унарного отрицания.

~~~

Побитовые операторы (F#)

  • Вычисляет значение операции побитового НЕ.

~-

Перегрузка операторов (F#)

  • Используется для объявления перегрузки для оператора унарного минуса.

~+

Перегрузка операторов (F#)

  • Используется для объявления перегрузки для оператора унарного плюса.

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

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

Оператор

Ассоциативность

as

Справа

when

Справа

| (вертикальная черта)

Слева

;

Справа

let

Неассоциативный

function, fun, match, try

Неассоциативный

if

Неассоциативный

->

Справа

:=

Справа

,

Неассоциативный

or, ||

Слева

&, &&

Слева

<op, >op, =, |op, &op

Слева

&&&, |||, ^^^, ~~~, <<<, >>>

Слева

^op

Справа

::

Справа

:?>, :?

Неассоциативный

-op, +op, (двоичный)

Слева

*op, /op, %op

Слева

**op

Справа

f x (применение функции)

Слева

| (соответствие шаблону)

Справа

Префиксные операторы (+op, -op, %, %% &, & &!op, ~op)

Слева

.

Слева

f(x)

Слева

f<types>

Слева

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

См. также

Ссылки

Перегрузка операторов (F#)

Другие ресурсы

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