型別宣告
Q# 支援使用者定義型別。 使用者定義型別類似於 F# 中的記錄類型;其皆為不變的,但支援複製和更新的結構。
使用者定義型別
使用者定義型別可以同時包含命名和匿名項目。
例如,在命名空間中的下列宣告會定義類型 Complex
,其具有兩個已命名項目 Real
和 Imaginary
,兩個的類型都是 Double
:
newtype Complex = (Real: Double, Imaginary : Double);
支援任何已命名和未命名項目的組合,而且可能也會命名內部項目。
例如,Nested
類型,定義為
newtype Nested = (Double, (ItemName : Int, String));
包含類型分別為 Double
和 String
的兩個匿名項目,以及類型 Int
的命名項目 ItemName
。
您可以透過其名稱或透過解構 (如需詳細資訊,請參閱項目存取) 來存取包含的項目。 您也可以透過解除包裝運算子,存取圖形符合宣告中所定義所有項目的元組。
使用者定義型別很有用的原因有兩個。 首先,只要使用定義類型的程式庫和程式透過其名稱 (而不是解構) 存取項目,就可以將類型擴充為稍後包含其他項目,而不會中斷任何程式庫程式碼。 因此,通常不建議透過解構存取項目。
其次,Q# 可讓您針對特定資料類型傳達意圖和期望,因為兩個使用者定義型別的值之間沒有自動轉換,即使其項目類型相同也是一樣。
使用者定義的建構函式
編譯器會自動產生使用者定義型別的建構函式。 目前無法定義自訂的建構函式,但這可能是未來語言的新增功能。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應