Share via


Naamruimten

Op het hoogste niveau bestaat een Q# programma uit een set naamruimten. Afgezien van opmerkingen zijn naamruimten de enige elementen op het hoogste niveau in een Q# programma en moeten alle andere elementen zich in een naamruimte bevinden. Elk bestand kan nul of meer naamruimten bevatten en elke naamruimte kan meerdere bestanden omvatten. Q# biedt geen ondersteuning voor geneste naamruimten.

Een naamruimteblok bestaat uit het trefwoord namespace, gevolgd door de naamruimtenaam en de inhoud van het blok binnen accolades { }. Naamruimtenamen bestaan uit een reeks van een of meer juridische symbolen , gescheiden door een punt (.). Hoewel naamruimten mogelijk puntjes bevatten voor een betere leesbaarheid, Q# worden relatieve verwijzingen naar naamruimten niet ondersteund. Bijvoorbeeld twee naamruimten Foo en Foo.Bar zijn niet gerelateerd en er is geen notie van een hiƫrarchie. Met name voor een functie Baz die is gedefinieerd in Foo.Bar, is het niet mogelijk om die functie te openen Foo en vervolgens te openen via Bar.Baz.

Naamruimteblokken kunnen open instructies bevatten, evenals bewerkings-, functie- en typedeclaraties . Deze kunnen in elke volgorde voorkomen en zijn standaard recursief, wat betekent dat ze kunnen worden gedeclareerd en gebruikt in elke volgorde en zichzelf kunnen aanroepen; het is niet nodig dat de declaratie van een type of aanroepbaar voorafgaat aan het gebruik ervan.

Open richtlijnen

Standaard is alles wat binnen dezelfde naamruimte is gedeclareerd, toegankelijk zonder verdere kwalificatie. Declaraties in een andere naamruimte kunnen echter alleen worden gebruikt door hun naam te kwalificeren met de naam van de naamruimte waartoe ze behoren of door die naamruimte te openen voordat deze wordt gebruikt, zoals wordt weergegeven in het volgende voorbeeld.

namespace Microsoft.Quantum.Samples {
    
    open Microsoft.Quantum.Arithmetic; 
    open Microsoft.Quantum.Arrays as Array; 

    // ...
}

In het voorbeeld wordt een open -instructie gebruikt om alle typen en aanroepbare items te importeren die zijn gedeclareerd in de naamruimte Microsoft.Quantum.Artithmetic. Ze kunnen vervolgens worden verwezen met hun niet-gekwalificeerde naam, tenzij die naam conflicteert met een declaratie in het naamruimteblok of een andere geopende naamruimte.

Als u wilt voorkomen dat u de volledige naam typt terwijl u nog steeds onderscheid maakt waar bepaalde elementen vandaan komen, kunt u een alternatieve naam of alias definiƫren, die meestal korter is, voor een bepaalde naamruimte. In dit geval kunnen alle typen en aanroepbare functies die in die naamruimte zijn gedeclareerd, worden gekwalificeerd met de gedefinieerde korte naam. In het vorige voorbeeld is dit het geval voor de Microsoft.Quantum.Arrays naamruimte. Een functie IndexRange die is gedeclareerd in Microsoft.Quantum.Arraysbijvoorbeeld, kan vervolgens worden gebruikt via Array.IndexRange dat naamruimteblok.

Of u nu een naamruimte opent of een alias definieert, open instructies zijn alleen geldig in het hele naamruimtedeel in dat bestand.