За последние несколько лет, по мере развития Q#, его синтаксис развивался вместе с ним. Было внесено несколько изменений в синтаксис, которые привели к устареванию способов выполнения стандартных действий в Q#, таких как удаление круглых скобок вокруг условий цикла for. Чтобы помочь нашим пользователям обновлять свой код с помощью новейшего синтаксиса, мы добавили в QDK несколько новых функций.

Когда вы используете расширения Q# для Visual Studio или Visual Studio Code для редактирования кода Q# с устаревшим синтаксисом, рассматриваемый код будет подчеркнут зелеными волнистыми линиями, и будут доступны предложения для обновления синтаксиса. В прошлом у нас уже были предложения по обновлению каждого устаревшего фрагмента кода. В выпуске 0.21 мы добавили действие кода для обновления всего устаревшего синтаксиса в файле:

Вы также можете обновить синтаксис через меню «Правка» или с помощью соответствующей комбинации клавиш. Когда вы обновляете синтаксис с помощью этого метода, код в файле также будет автоматически отформатирован, удалив лишние пробелы и исправив отступы. Это дополнительное форматирование относится к пункту меню «Правка».

Помимо расширений Q#, мы также добавили эту функцию обновления в SDK для Q#, добавив цель сборки под названием UpdateSyntax. При нацеливании на это с помощью msbuild все файлы в проекте Q# могут обновить свой синтаксис за один раз. Эту цель можно вызвать из командной строки в расположении проекта Q# с помощью команды dotnet msbuild -t:UpdateSyntax.

Средство форматирования Q# исправляет несколько устаревших синтаксисов и обновляет их до поддерживаемых синтаксисов. В настоящее время к ним относятся:

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

  • Ссылки на тип модуля — заменяет () на Unit при ссылке на тип модуля (например, в вызываемых сигнатурах). Это не повлияет на литерал значения Unit (например, в операторах return).

  • For-Loops — удаляет устаревшие круглые скобки вокруг диапазонов for-loops и циклических переменных.

  • Параметры специализации — обновляет устаревшие объявления специализации, чтобы включить параметр ....

  • Новые массивы — обновляет синтаксис нового массива <Type>[n] до нового синтаксиса массива [val, size = n].

  • Булевы операторы — заменяют устаревшие логические операторы &&, || и ! с их эквивалентами ключевых слов и, или, и не соответственно.

Предоставляя эти методы обновления кода Q#, мы надеемся помочь вам поддерживать ваш код в актуальном состоянии и использовать преимущества новейших функций Q#!