類型宣告
Q# 支援使用者定義的 struct
類型。
struct
類型類似於 F# 中的記錄類型;它們不可變,但支援 複製和更新 建構。
結構類型
struct
類型只能包含具名專案,而且不支援匿名專案。 雖然無法巢狀專案,但支援具名專案的任何組合。
例如,下列宣告會定義結構 Complex
,其具有兩個具名專案 Real
和 Imaginary
,這兩個類型為 Double
:
struct Complex {
Real : Double,
Imaginary : Double,
}
您可以透過其名稱或 解構 來存取包含的專案(如需詳細資訊,請參閱 專案存取)。 您也可以透過 解除包裝運算子,存取圖形符合宣告中所定義專案的所有專案的 Tuple,。
struct
類型有兩個原因很有用。 首先,只要使用已定義型別的連結庫和程式會透過其名稱存取專案,而不是透過解構來擴充類型,以在稍後包含其他專案,而不會中斷任何連結庫程序代碼。 因此,通常不建議透過解構存取專案。
其次,Q# 可讓您傳達特定數據類型的意圖和期望,因為兩個 struct
類型的值之間沒有自動轉換,即使其專案類型相同也一樣。
結構建構函式
當編譯程式讀取 struct
定義時,編譯程式會自動產生新 struct
類型的建構函式。 針對上一個範例中的 Complex
結構,您可以使用 建立 實例
let complexPair = Complex(1.4, 2.1);
例如,您也可以使用 new
關鍵詞來定義實例
let complexPair = new Complex { Real = 1.4, Imaginary = 2.1 };
您也可以使用 ...
語法複製現有的結構
let copyPair = new Complex { ...complexPair };
複製時,您可以指定要變更的個別欄位
let updatedPair = new Complex { ...complexPair, Real = 3.5 };