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


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

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

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

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

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

Ссылки

Описание

!

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

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

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

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

!=

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

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

"

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

  • Отделяет текстовую строку.

#

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

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

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

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

$

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

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

%

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

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

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

  • Используется для соединения кавычек.

&

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

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

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

&&

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

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

&&&

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

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

'

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

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

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

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

``...``

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

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

( )

Тип Unit (F#)

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

(...)

Кортежи (F#)

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

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

  • Отделяет кортеж.

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

(*...*)

  • Отделяет примечание, которое может занимать несколько строк.

(|...|)

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

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

*

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

Кортежи (F#)

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

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

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

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

**

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

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

+

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

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

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

,

Кортежи (F#)

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

-

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

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

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

->

Функции (F#)

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

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

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

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

.

Члены (F#)

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

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

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

..

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

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

.. ..

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

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

.[...]

Массивы (F#)

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

/

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

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

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

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

//

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

///

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

  • Обозначает примечание в формате XML.

:

Функции (F#)

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

::

Списки (F#)

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

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

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

:=

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

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

:>

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

  • Преобразует тип в тип, стоящий выше в иерархии.

:?

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

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

:?>

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

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

;

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

Списки (F#)

Записи (F#)

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

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

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

<

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

  • Определяет значение операции "меньше"

<<

Функции (F#)

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

<<<

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

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

<-

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

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

<...>

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

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

<>

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

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

<=

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

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

<|

Функции (F#)

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

<@...@>

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

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

<@@...@@>

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

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

=

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

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

==

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

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

>

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

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

>>

Функции (F#)

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

>>>

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

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

>=

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

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

?

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

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

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

? ... <- ...

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

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

@

Списки (F#)

Строки (F#)

  • Сцепляет два списка.

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

[...]

Списки (F#)

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

[|...|]

Массивы (F#)

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

[<...>]

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

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

\

Строки (F#)

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

^

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

Строки (F#)

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

  • Сцепляет строки.

^^^

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

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

_

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

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

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

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

`

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

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

{...}

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

Записи (F#)

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

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

|

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

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

||

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

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

|||

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

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

|>

Функции (F#)

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

~~

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

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

~~~

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

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

~-

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

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

~+

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

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

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

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

Оператор

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

as

Right

when

Right

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

Left

;

Right

let

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

function, fun, match, try

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

if

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

->

Right

:=

Right

,

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

or, ||

Left

&, &&

Left

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

Left

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

Left

^op

Right

::

Right

:?>, :?

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

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

Left

*op, /op, %op

Left

**op

Right

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

Left

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

Right

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

Left

.

Left

f(x)

Left

f<types>

Left

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

См. также

Ссылки

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

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

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

Журнал изменений

Дата

Журнал

Причина

Октябрь 2010

Добавлены сведения об операторах равенства и неравенства.

Улучшение информации.

Апрель 2011

В таблицу приоритетов добавлены битовые операторы.

Обратная связь от клиента.