Namaspace

Pada tingkat teratasnya, program Q# terdiri dari satu set namespace layanan. Selain komentar, namespace layanan adalah satu-satunya elemen tingkat atas dalam program Q#, dan elemen lain harus berada di dalam namespace layanan. Setiap file mungkin berisi beberapa namespace layanan atau tidak sama sekali, dan setiap namespace layanan dapat mencakup beberapa file. Q# tidak mendukung namespace layanan berlapis.

Blok namespace layanan terdiri dari kata kunci namespace, diikuti oleh nama namespace layanan, dan isi blok di dalam tanda kurung { }. Nama namespace layanan terdiri atas urutan dari satu atau lebih simbol legal yang dipisahkan oleh titik (.). Meskipun nama namespace layanan mungkin berisi titik-titik untuk keterbacaan yang lebih baik, Q# tidak mendukung referensi relatif ke namespace layanan. Misalnya, dua namespace layanan Foo dan Foo.Bar tidak berkaitan, dan tidak ada gagasan hierarki. Secara khusus, untuk fungsi Baz yang didefinisikan dalam Foo.Bar, tidak mungkin untuk membuka Foo dan kemudian mengakses fungsi tersebut melalui Bar.Baz.

Blok namespace mungkin berisi arahan terbuka serta deklarasi operasi, fungsi, dan jenis . Ini dapat terjadi dalam urutan apa pun dan bersifat rekursif secara default, yang berarti mereka dapat dideklrasaikan dan digunakan dalam urutan apa pun dan dapat memanggil diri sendiri; tidak perlu deklarasi jenis atau callable untuk mendahului penggunaannya.

Perintah Open

Secara default, semua yang dideklarasikan dalam namespace layanan yang sama dapat diakses tanpa kualifikasi lebih lanjut. Namun, deklarasi di namespace layanan yang berbeda hanya dapat digunakan dengan mengkualifikasi nama mereka dengan nama namespace layanan atau dengan membuka namespace layanan tersebut sebelum digunakan, seperti yang ditunjukkan dalam contoh berikut.

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

    // ...
}

Contoh menggunakan perintah open untuk mengimpor semua jenis dan callable yang dideklarasikan dalam namespace layanan Microsoft.Quantum.Artithmetic. Mereka kemudian dapat dirujuk dengan nama mereka yang tidak terkualifikasi kecuali nama tersebut bertentangan dengan deklarasi di blok namespace layanan atau namespace layanan lain yang terbuka.

Untuk menghindari mengetik nama lengkap sambil tetap membedakan dari mana elemen tertentu berasal, Anda dapat menentukan nama alternatif, atau alias, yang biasanya lebih pendek, untuk namespace layanan tertentu. Dalam hal ini, sebagai gantinya, semua jenis dan callable yang dideklarasikan dalam namespace layanan tersebut dapat dikualifikasikan dengan nama pendek yang ditentukan. Pada contoh sebelumnya, ini adalah kasus untuk namespace layanan Microsoft.Quantum.Arrays. Fungsi IndexRange yang dideklarasikan dalam Microsoft.Quantum.Arrays, misalnya, kemudian dapat digunakan melalui Array.IndexRange dalam blok namespace layanan tersebut.

Baik Anda membuka namespace layanan atau menentukan alias, open direktif valid di seluruh bagian namespace dalam file tersebut saja.