Share via


常值

單位常值

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 類型的現有常值是 truefalse

字串常值

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 類型的現有常值是 ZeroOne

類型 Result 的值代表二進位量子測量結果。 Zero 表示投射到 +1 特徵向量空間,One 表示投射到 -1 特徵向量空間。

Pauli 常值

Pauli 類型的現有常值是 PauliIPauliXPauliYPauliZ

類型 Pauli 的值代表四個單一量子位元 Pauli 矩陣的其中一個,PauliI 表示恆等式。 類型 Pauli 的值通常用來表示旋轉軸,以及指定要測量的基準。

範圍常值

Range 類型的值常值是 start..step..stop 格式的運算式,其中 startstepend 是類型 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 運算式來建立匿名作業和 函式