單一案例歧視聯合

單一案件歧視聯合就像任何其他受歧視的聯合一樣,只是它只有一個案例。

// Define single-case discriminated union type.
type OrderId = OrderId of int
// Construct OrderId type.
let order = OrderId 123
// Deconstruct using pattern matching. 
// Parentheses used so compiler doesn't think it is a function definition.   
let (OrderId id) = order

它對於強制型別安全很有用,並且常用於 F#而不是 C#和 Java,其中建立新型別會帶來更多開銷。

以下兩種替代型別定義導致宣告相同的單一案例區分聯合:

type OrderId = | OrderId of int

type OrderId =
      | OrderId of int