Harfiah

Unit harfiah

Satu-satunya harfiah yang ada untuk Unit jenis adalah nilai ().

Nilai Unit umumnya digunakan sebagai argumen untuk dapat dipanggil, baik karena tidak ada argumen lain yang perlu diteruskan atau untuk menunda eksekusi. Ini juga digunakan sebagai nilai pengembalian ketika tidak ada nilai lain yang perlu dikembalikan, yang merupakan kasus untuk operasi uniter, yaitu, operasi yang mendukung Adjoint dan/atau Controlled funktor.

Literal int

Nilai harfiah untuk Int jenis dapat dinyatakan dalam representasi biner, oktal, desimal, atau heksadesimal. Harfiah yang dinyatakan dalam biner diawali dengan 0b, dengan 0o untuk oktal, dan dengan 0x untuk heksadesimal. Tidak ada awalan untuk representasi desimal yang umum digunakan.

Representasi Nilai Harfiah
Biner 0b101010
Oktal 0o52
Desimal 42
Heksadesimal 0x2a

Literal BigInt

Nilai harfiah untuk BigInt jenis selalu didahului dengan L dan dapat dinyatakan dalam representasi biner, oktal, desimal, atau heksadesimal. Harfiah yang dinyatakan dalam biner diawali dengan 0b, dengan 0o untuk oktal, dan dengan 0x untuk heksadesimal. Tidak ada awalan untuk representasi desimal yang umum digunakan.

Representasi Nilai Harfiah
Biner 0b101010L
Oktal 0o52L
Desimal 42L
Heksadesimal 0x2aL

Literal ganda

Harfiah nilai untuk Double jenis dapat dinyatakan dalam notasi standar atau ilmiah.

Representasi Nilai Harfiah
Standard 0.1973269804
Ilmiah 1.973269804e-1

Jika tidak ada yang mengikuti setelah titik desimal, maka digit setelah titik desimal dapat dihilangkan. Misalnya, 1. adalah harfiah yang valid Double dan sama dengan 1.0.

Literal bool

Harfiah yang ada untuk Bool jenis adalah true dan false.

Literal string

Nilai harfiah untuk String jenis adalah urutan panjang karakter Unicode yang arbitrer yang diapit tanda kutip ganda. Di dalam untai (karakter), karakter garis miring terbalik \ dapat digunakan untuk menghindari karakter tanda kutip ganda, dan untuk menyisipkan baris baru sebagai \n, enter sebagai \r, dan tab sebagai \t.

Berikut ini adalah contoh untuk harfiah untai (karakter) yang valid:

"This is a simple string."
"\"This is a more complex string.\", she said.\n"

Q# juga mendukung untai (karakter) yang diinterpolasi. Sebuah untai (karakter) interpolasi adalah untai (karakter) harfiah yang mungkin berisi sejumlah ekspresi interpolasi. Ekspresi ini bisa dari jenis yang berubah-ubah. Setelah konstruksi, ekspresi dievaluasi dan representasi Stringnya disisipkan di lokasi yang sesuai dalam harfiah yang ditentukan. Interpolasi diaktifkan dengan prepending karakter $ khusus langsung sebelum kutipan awal, tanpa spasi putih di antara mereka.

Misalnya, jika res adalah ekspresi yang mengevaluasi ke 1, maka kalimat kedua dalam literal berikut String menampilkan "Hasilnya adalah 1.":

$"This is an interpolated string. The result was {res}."

Literal qubit

Tidak ada harfiah untuk Qubit jenis, karena memori kuantum dikelola oleh runtime. Nilai jenis Qubit karenanya hanya dapat diperoleh melalui alokasi.

Nilai jenis Qubit mewakili pengidentifikasi buram di mana bit kuantum, atau qubit, dapat ditangani. Satu-satunya operator yang mereka dukung adalah perbandingan kesetaraan. Untuk informasi selengkapnya tentang Qubit jenis data, Lihat Qubits.

Literal hasil

Harfiah yang ada untuk Result jenis adalah Zero dan One.

Nilai jenis Result mewakili hasil pengukuran kuantum biner. Zero menunjukkan proyeksi ke ruang eigen +1, One menunjukkan proyeksi ke ruang eigen -1.

Harfiah Pauli

Harfiah yang ada untuk Pauli jenis adalah PauliI, PauliX, PauliY, dan PauliZ.

Nilai jenis Pauli mewakili salah satu dari empat matriks Pauli qubit tunggal, dengan PauliI mewakili identitas. Nilai jenis Pauli biasanya digunakan untuk menunjukkan sumbu rotasi dan untuk menentukan dasar mana yang akan diukur.

Rentang harfiah

Harfiah nilai untuk Range jenis adalah ekspresi dari bentuk start..step..stop, di mana start, step, dan end adalah ekspresi dari jenis Int. Jika ukuran langkah adalah satu, itu mungkin dihilangkan. Misalnya, start..stop adalah harfiah yang valid Range dan sama dengan start..1..stop.

Nilai jenis Range mewakili urutan bilangan bulat, di mana elemen pertama dalam urutan adalah start, dan elemen berikutnya diperoleh dengan menambahkan step ke yang sebelumnya, hingga stop dilewatkan. Range nilai inklusif di kedua ujungnya, yaitu, elemen terakhir dari rentang adalah stop jika perbedaan antara start dan stop adalah kelipatan dari step. Rentang mungkin kosong jika, misalnya, step positif dan stop < start.

Berikut adalah contoh untuk harfiah Range yang valid:

  • 1..3 adalah rentang 1, 2, 3.
  • 2..2..5 adalah rentang 2, 4.
  • 2..2..6 adalah rentang 2, 4, 6.
  • 6..-2..2 adalah rentang 6, 4, 2.
  • 2..-2..1 adalah rentang 2.
  • 2..1 adalah rentang kosong.

Untuk informasi selengkapnya, lihat Ekspresi kontekstual.

Literal array

Array literal adalah urutan nol atau lebih ekspresi, dipisahkan oleh koma dan diapit dalam tanda kurung siku [ dan ]; misalnya, [1,2,3]. Semua ekspresi harus memiliki jenis dasar umum, yang merupakan jenis item array. Jika array kosong ditentukan dengan [], anotasi jenis mungkin diperlukan bagi pengompilasi untuk menentukan jenis ekspresi yang sesuai.

Array dengan panjang arbitrer dapat dibuat menggunakan ekspresi array berukuran. Ekspresi seperti itu adalah bentuk [expr, size = s], di mana s dapat berupa ekspresi jenis Int apa pun dan expr dievaluasi ke nilai yang akan menjadi item dari array berulang s kali. Misalnya, [1.2, size = 3] membuat array yang sama dengan [1.2, 1.2, 1.2].

Literal tuple

Literal tuple adalah urutan dari satu atau beberapa ekspresi dari jenis apa pun, dipisahkan oleh koma dan diapit dalam tanda kurung ( dan ). Jenis tuple mencakup informasi tentang setiap jenis item.

Nilai Harfiah Jenis
("Id", 0, 1.) (String, Int, Double)
(PauliX,(3,1)) (Pauli, (Int, Int))

Tuple yang berisi satu item diperlakukan identik dengan item itu sendiri, baik dalam jenis maupun nilai, yang disebut kesetaraan tuple singleton.

Tuple digunakan untuk menggabungkan nilai menjadi satu nilai, membuatnya lebih mudah untuk menyebarkannya. Ini memungkinkan setiap panggilan untuk mengambil tepat satu input dan mengembalikan tepat satu output.

Literal untuk jenis yang ditentukan pengguna

Nilai jenis yang ditentukan pengguna dibangun dengan memanggil konstruktor mereka. Konstruktor default dibuat secara otomatis saat mendeklarasikan jenis. Saat ini tidak mungkin untuk mendefinisikan konstruktor khusus.

Misalnya, jika IntPair memiliki dua item berjenis Int, artinya IntPair(2, 3) membuat instans baru dengan memanggil konstruktor default.

Operasi dan literal fungsi

Operasi dan fungsi anonim dapat dibuat menggunakan ekspresi lambda.