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


Выражения

По сути выражения Q# являются либо литералами значений, либо идентификаторами, причем идентификаторы могут ссылаться либо на локально объявленные переменные, либо на глобально объявленные вызываемые объекты (глобальных констант в Q# в настоящее время нет). Для построения более широкого спектра выражений из них можно использовать операторы, комбинаторы и модификаторы.

  • Операторы — это по сути всего лишь специальный синтаксис для определенных вызываемых объектов.

    Язык Q# пока еще недостаточно выразителен для формальной фиксации возможностей каждого оператора в форме объявления вызываемого объекта, однако этот недостаток должен быть исправлен в будущем.

  • Модификаторы могут применяться только к определенным выражениям. Один или несколько модификаторов могут применяться к выражениям, которые являются идентификаторами, выражениями доступа к элементам массива, выражениями доступа к именованным элементам или выражением в круглых скобках, что эквивалентно кортежу из одного элемента (см. этот раздел). Они могут предшествовать выражению (префикс) или следовать за ним (постфикс). Таким образом, они являются специальными унарными операторами с более тесной привязкой, чем вызовы функций или операций, но менее тесной, чем любой тип доступа к элементам. В частности, функторы являются префиксными модификаторами, тогда как оператор распаковки — постфиксным.

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

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