常值
單位常值
Unit
類型現有的唯一常值 是值 ()
。
值 Unit
通常用來做為可呼叫項的自變數,因為不需要傳遞其他自變數或延遲執行。 當不需要傳回其他值時,它也會當做傳回值,也就是支援 和/或運算函式的Controlled
作業Adjoint
的情況。
Int 常值
Int
類型的值常值可以二進位、八進位、十進位或十六進位表示法表示。 以二進位表示的常值會加上前置詞 0b
,八進位加上 0o
,十六進位加上 0x
。 常用的十進位表示法不加前置詞。
表示法 | 值常值 |
---|---|
Binary | 0b101010 |
八進位 | 0o52 |
Decimal | 42 |
十六進位 | 0x2a |
BigInt 常值
BigInt
類型的值常值一律加上前置詞 L
,可以二進位、八進位、十進位或十六進位表示法表示。 以二進位表示的常值會加上前置詞 0b
,八進位加上 0o
,十六進位加上 0x
。 常用的十進位表示法不加前置詞。
表示法 | 值常值 |
---|---|
Binary | 0b101010L |
八進位 | 0o52L |
Decimal | 42L |
十六進位 | 0x2aL |
雙常值
Double
類型的值常值可以標準或科學記號標記法表示。
表示法 | 值常值 |
---|---|
標準 | 0.1973269804 |
科學記號 | 1.973269804e-1 |
如果小數點之後沒有緊接著任何內容,則可能會省略小數點後面的數位。 例如, 1.
是有效的 Double
常值,與 相同 1.0
。
布爾常值
Bool
類型的現有常值是 true
和 false
。
字串常值
String
類型的值常值是以雙引號括住的任意長度 Unicode 字元序列。
字串中的反斜線字元 \
可以用來逸出雙引號字元,並插入換行符號作為 \n
、歸位字元作為 \r
,以及 Tab 鍵作為 \t
。
下列為有效的字串常值範例:
"This is a simple string."
"\"This is a more complex string.\", she said.\n"
Q# 也支援「差補字串」。
差補字串是可以包含任意數量插補運算式的字串常值。 這些運算式可為任意類型。
運算式會在建構時進行評估,且其 String
表示會插入到定義常值內的對應位置。 在初始引號前面加上特殊字元 $
,在開頭引號前面加上空格符,即可啟用插補。
例如,如果 res
是評估為 1
的表達式,則下列 String
常值中的第二個句子會顯示「結果為1」:
$"This is an interpolated string. The result was {res}."
量子位常值
因為量子記憶體是由執行階段管理,所以 Qubit
類型沒有常值。 因此,您只能透過配置取得類型 Qubit
的值。
類型的 Qubit
值代表可尋址量子位或 量子位的不透明標識符。 其唯一支援的運算子是相等比較。 如需數據類型的詳細資訊 Qubit
,請參閱 量子位。
結果常值
Result
類型的現有常值是 Zero
和 One
。
類型 Result
的值代表二進位量子測量結果。
Zero
表示投射到 +1 特徵向量空間,One
表示投射到 -1 特徵向量空間。
Pauli 常值
Pauli
類型的現有常值是 PauliI
、PauliX
、PauliY
和 PauliZ
。
類型 Pauli
的值代表四個單一量子位元 Pauli 矩陣的其中一個,PauliI
表示恆等式。
類型 Pauli
的值通常用來表示旋轉軸,以及指定要測量的基準。
範圍常值
Range
類型的值常值是 start..step..stop
格式的運算式,其中 start
、step
和 end
是類型 Int
的運算式。 如果步驟大小為一,可能會省略。 例如, start..stop
是有效的 Range
常值,與 相同 start..1..stop
。
類型 Range
的值代表一連串的整數,此序列中的第一個元素是 start
,後續的元素則是前一個元素加 step
,直到 stop
為止。
Range
值在兩端都是包含的,也就是說,如果和 stop
之間的start
差異是 的倍數step
,範圍的最後一個專案就是 stop
。
例如,如果 step
是正數且為 stop < start
,則範圍為空。
下列為有效的 Range
常值範例:
-
1..3
是範圍 1、2、3。 -
2..2..5
是範圍 2、4。 -
2..2..6
是範圍 2、4、6。 -
6..-2..2
是範圍 6、4、2。 -
2..-2..1
是範圍 2。 -
2..1
是空的範圍。
如需詳細資訊,請參閱 關係型表達式。
數位常值
陣列常值是零個或多個表達式的序列,以逗號分隔,並以括弧[
和]
括住;例如 [1,2,3]
。
所有運算式都必須有 通用基底類型,這是數位的項目類型。 如果使用 指定 []
空陣列,編譯程式可能需要型別批注來判斷表達式的適當類型。
您可以使用 sized-array 運算式來建立任意長度的陣列。
這類表達式的格式 [expr, size = s]
為 ,其中 s
可以是 類型 Int
的任何運算式,並 expr
評估為值,該值將會是數位重複 s
次數的專案。 例如, [1.2, size = 3]
建立與 相同的陣列 [1.2, 1.2, 1.2]
。
元組常值
元組常值是任何類型的一或多個表達式序列,以逗號分隔,並以括弧(
和 )
括住。 Tuple 類型包含每個項目類型的資訊。
值常值 | 類型 |
---|---|
("Id", 0, 1.) |
(String, Int, Double) |
(PauliX,(3,1)) |
(Pauli, (Int, Int)) |
包含單一專案的 Tuple 會被視為與專案本身相同的類型與值,這稱為 單一 Tuple 等價。
Tuple 的用途是將多個值組合成單一值,以便更容易傳遞這些值。 這可讓每個可呼叫者只接受一個輸入,並只傳回一個輸出。
用戶定義型別的常值
用戶定義型別的值是藉由叫用其建構函式來建構。 預設建構函式會在宣告類型時自動產生。 目前不能定義自訂建構函式。
例如,如果 IntPair
有兩個類型 Int
的項目,則 IntPair(2, 3)
會叫用預設的建構函式來建立新執行個體。
作業和函式常值
您可以使用 Lambda 運算式來建立匿名作業和 函式。