Obory názvů
Na nejvyšší úrovni Q# se program skládá ze sady oborů názvů. Kromě komentářů jsou obory názvů jedinými prvky nejvyšší úrovně v Q# programu a všechny ostatní prvky se musí nacházet v oboru názvů. Každý soubor může obsahovat nula nebo více oborů názvů a každý obor názvů může zahrnovat více souborů. Q# nepodporuje vnořené obory názvů.
Blok oboru názvů se skládá z klíčového slova namespace
, za kterým následuje název oboru názvů a obsah bloku uvnitř složených závorek { }
.
Názvy oborů názvů se skládají z posloupnosti jednoho nebo více právních symbolů oddělených tečkou (.
).
Přestože názvy oborů názvů mohou obsahovat tečky pro lepší čitelnost, Q# nepodporuje relativní odkazy na obory názvů. Například dva obory Foo
názvů a Foo.Bar
spolu nesouvisejí a neexistuje žádná hierarchie. Konkrétně u funkce Baz
definované v Foo.Bar
není možné tuto funkci otevřít Foo
a pak k ní přistupovat přes Bar.Baz
.
Bloky oboru názvů mohou obsahovat direktivy open i deklarace operací, funkcí a typů . Tyto mohou nastat v libovolném pořadí a jsou ve výchozím nastavení rekurzivní, což znamená, že mohou být deklarovány a použity v libovolném pořadí a mohou se volat; není nutné, aby deklarace typu nebo volatelného typu předcházela jeho použití.
Open – direktivy
Ve výchozím nastavení je možné přistupovat ke všemu deklarovanému v rámci stejného oboru názvů bez další kvalifikace. Deklarace v jiném oboru názvů však lze použít pouze tak, že se jejich název kvalifikuje názvem oboru názvů, do kterého patří, nebo otevřením tohoto oboru názvů před použitím, jak je znázorněno v následujícím příkladu.
namespace Microsoft.Quantum.Samples {
open Microsoft.Quantum.Arithmetic;
open Microsoft.Quantum.Arrays as Array;
// ...
}
Příklad používá direktivu open
k importu všech typů a volatelných objektů deklarovaných v oboru názvů Microsoft.Quantum.Artithmetic. Poté mohou být odkazovány svým nekvalifikovaným názvem, pokud tento název není v konfliktu s deklarací v bloku oboru názvů nebo jiném otevřeném oboru názvů.
Pokud se chcete vyhnout zadávání celého názvu a přitom stále rozlišovat, odkud určité prvky pocházejí, můžete pro určitý obor názvů definovat alternativní název neboli alias, který je obvykle kratší. V tomto případě mohou být všechny typy a volatelné typy deklarované v tomto oboru názvů místo toho kvalifikovány definovaným krátkým názvem.
V předchozím příkladu je to případ Microsoft.Quantum.Arrays
oboru názvů . Funkci IndexRange
deklarovanou například v Microsoft.Quantum.Arrays
souboru je možné použít v Array.IndexRange
rámci daného bloku oboru názvů.
Ať už otevíráte obor názvů nebo definujete alias, open
jsou direktivy platné pouze v celé části oboru názvů v daném souboru.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro