共用方式為


類型系統

由於量子演算法的重點更著重於應該達成的目標,而不是在數據結構方面的問題表示,因此對語言設計採取更功能性的觀點是一種自然的選擇。 同時,類型系統是一種功能強大的機制,可用於程式分析和其他編譯時間檢查,以利制定健全的程序代碼。

整體而言,Q# 類型系統相當極簡,也就是說,類別或介面沒有明確的概念,因為從 C# 或 Java 等傳統語言使用類別或介面。 我們也採取一些務實的方法進行漸進式進展,使某些建構尚未完全整合到類型系統。 其中一個範例是 functors,可在表達式內使用,但類型系統中還沒有表示法。 相對地,它們目前無法指派或傳遞為自變數,就像類型參數化可呼叫者的情況一樣。 我們希望在擴充類型系統方面取得漸進式進展,並將立即需求與長期計劃平衡。

可用的類型

Q# 中的所有類型都會 固定

類型 說明
Unit 表示唯一值為 ()的單一型別。
Int 表示64位帶正負號的整數。 範圍從 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
BigInt 表示任何大小的帶正負號整數
Double 表示雙精確度 64 位浮點數。 範圍從 -1.79769313486232e308 到 1.79769313486232e308,以及 NaN(不是數位)。
Bool 表示布林值 。 可能的值為 truefalse
String 將文字表示為由UTF-16程式代碼單位序列組成的
Qubit 表示可以尋址虛擬量子記憶體的不透明標識碼。 類型 Qubit 的值 會透過配置具現化。
Result 表示具有 eigenvalues ±1 之量子運算符的 eigenspaces 投影測量結果。 ZeroOne
Pauli 表示單一量子位Pauli矩陣。 可能的 值為 PauliIPauliXPauliYPauliZ
Range 表示相同間距 Int 值的已排序序列。 可能會以遞增或遞減順序表示序列。
陣列 表示 ,每個值都包含相同類型的值序列。
表示 ,每個值都包含不同類型的固定項目數。 包含單一元素的 Tuple 相當於其所包含的專案。
struct 表示 用戶定義型別, 由不同類型的具名專案所組成。 宣告新實例時, 具現化。
行動 表示不具決定性的 可呼叫,其接受一個 (可能為 Tuple 值) 輸入自變數,並傳回一個 (可能為 Tuple 值) 輸出。 對作業的呼叫 可能會有副作用,而且即使使用相同的自變數叫用,輸出也可能因每個呼叫而有所不同。
功能 表示具決定性 可呼叫,接受一個(可能為 Tuple 值)輸入自變數,並傳回一個(可能為 Tuple 值)輸出。 函式 值的呼叫 沒有副作用,而且在輸入相同的情況下,輸出一律會相同。