Пространства имен
На самом верхнем уровне программа на Q# состоит из набора пространств имен. Помимо комментариев, пространства имен являются единственными элементами верхнего уровня в программе Q#. Все остальные элементы должны находиться в пространстве имен. Каждый файл может содержать ноль или более пространств имен, а каждое пространство имен может охватывать несколько файлов. Q# не поддерживает вложенные пространства имен.
Блок пространства имен состоит из ключевого слова namespace
, за которым следует имя пространства имен и содержимое блока в фигурных скобках { }
.
Имена пространств имен представляют собой последовательности из одного или нескольких допустимых символов, разделенных точкой (.
).
Хотя имена пространств имен могут содержать точки для повышения удобочитаемости, Q# не поддерживает относительные ссылки на пространства имен. Например, два пространства имен Foo
и Foo.Bar
не связаны друг с другом и не образуют иерархию. В частности, если в пространстве имен Foo.Bar
определена функция Baz
, нельзя открыть пространство имен Foo
и получить доступ к этой функции через Bar.Baz
.
Блоки пространства имен могут содержать открытые директивы , а также объявления операций, функций и типов . Они могут следовать в любом порядке и по умолчанию рекурсивны, то есть могут объявляться и использоваться в любом порядке, в том числе вызывать сами себя. Объявлять тип или вызываемый объект перед его использованием не требуется.
Директивы open
По умолчанию все элементы, объявленные в пространстве имен, могут использоваться в его пределах без дополнительного префикса. Однако чтобы использовать объявления из другого пространства имен, необходимо указать его имя перед именем объявленного элемента или предварительно открыть это пространство имен, как показано в примере ниже.
namespace Microsoft.Quantum.Samples {
open Microsoft.Quantum.Arithmetic;
open Microsoft.Quantum.Arrays as Array;
// ...
}
В примере используется директива open
для импорта всех типов и вызываемых объектов, объявленных в пространстве имен Microsoft.Quantum.Artithmetic. После этого к ним можно обращаться по неполным именам, если имя не конфликтует с объявлением в блоке текущего или другого открытого пространства имен.
Чтобы не вводить полное имя, но при этом не запутаться в том, откуда берется тот или иной элемент, можно определить альтернативное имя или псевдоним для пространства имен, обычно более короткий. В таком случае ко всем типам и вызываемым объектам, объявленным в этом пространстве имен, можно обращаться, указывая сокращенное имя в качестве префикса.
В предыдущем примере это было сделано для пространства имен Microsoft.Quantum.Arrays
. Например, функцию IndexRange
, объявленную в Microsoft.Quantum.Arrays
, можно использовать по имени Array.IndexRange
в блоке пространства имен.
Независимо от того, открываете ли вы пространство имен или определяете псевдоним, open
директивы допустимы только в элементе пространства имен в этом файле.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по