Ad alanları

En üst düzeyde, bir Q# program bir dizi ad alanı içerir. Açıklamaların yanı sıra, ad alanları bir Q# programdaki tek üst düzey öğelerdir ve diğer öğelerin bir ad alanında bulunması gerekir. Her dosya sıfır veya daha fazla ad alanı içerebilir ve her ad alanı birden çok dosyaya yayılabilir. Q# iç içe ad alanlarını desteklemez.

Ad alanı bloğu anahtar sözcüğünden namespaceve ardından ad alanı adından ve küme ayraçlarının { }içindeki bloğun içeriğinden oluşur. Ad alanı adları, nokta (.) ile ayrılmış bir veya daha fazla yasal simgeden oluşan bir diziden oluşur. Ad alanı adları daha iyi okunabilirlik için noktalar içerebilir ancak Q# ad alanlarına göreli başvuruları desteklemez. Örneğin, iki ad alanı Foo ve Foo.Bar ile ilişkisizdir ve hiyerarşiye ilişkin bir not yoktur. Özellikle, içinde Foo.Bartanımlanan bir işlev Baz için aracılığıyla bu işlevi açmak Foo ve ardından bu işleve Bar.Bazerişmek mümkün değildir.

Ad alanı blokları açık yönergelerin yanı sıra işlem, işlev ve tür bildirimleri içerebilir. Bunlar herhangi bir sırada ortaya çıkabilir ve varsayılan olarak özyinelemeli olabilir, yani herhangi bir sırada bildirilebilir ve kullanılabilirler ve kendilerini çağırabilirler; kullanımdan önce bir türün veya çağrılabilir bildirimine gerek yoktur.

Open Yönergeleri

Varsayılan olarak, aynı ad alanında bildirilen her şeye başka niteleme olmadan erişilebilir. Ancak, farklı bir ad alanında bildirimler yalnızca adlarını ait oldukları ad alanının adıyla niteleyerek veya aşağıdaki örnekte gösterildiği gibi kullanılmadan önce bu ad alanını açarak kullanılabilir.

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

    // ...
}

Örnek, Microsoft.Quantum.Artithmetic ad alanında bildirilen tüm türleri ve çağrılabilenleri içeri aktarmak için bir open yönerge kullanır. Ad alanı bloğundaki bir bildirimle veya başka bir açık ad alanındaki bir ad alanıyla çakışmadığı sürece bu adlar, nitelenmemiş adlarıyla adlandırılabilir.

Belirli öğelerin nereden geldiğini ayırt ederken tam adı yazmaktan kaçınmak için, belirli bir ad alanı için genellikle daha kısa olan alternatif bir ad veya diğer ad tanımlayabilirsiniz. Bu durumda, söz konusu ad alanında bildirilen tüm türler ve çağrılabilir öğeler bunun yerine tanımlanan kısa adla nitelenebilir. Önceki örnekte ad alanı için bu durum söz Microsoft.Quantum.Arrays konusudur. Örneğin içinde Microsoft.Quantum.Arraysbildirilen bir işlevIndexRange, bu ad alanı bloğu içinde aracılığıyla Array.IndexRange kullanılabilir.

Ad alanını açarken veya diğer ad tanımlarken yönergeler yalnızca open bu dosyadaki ad alanı parçası boyunca geçerlidir.