如何避免重复声明类似的类型?

Sam*_*tha 6 f#

我有以下代码:

type CapturablePieces = Pawn | Knight | Bishop | Rook | Queen

我可以定义另一种类型如下:

type Pieces = Pawn | Knight | Bishop | Rook | Queen | King

但是,这里显然有很多代码重复.有没有办法通过纳入CapturablePieces定义来避免这种情况Pieces

Bar*_*cki 8

如果你不需要CapturablePieces是可分离的类型,只是某些特定情况的子集,也许它可以作为成员实现?我可以想到两种方式:

a)静态成员中可捕获部分的集合:

type Pieces = Pawn | Knight | Bishop | Rook | Queen | King
    static member Capturable = [Pawn; Knight; Bishop; Rook; Queen]
Run Code Online (Sandbox Code Playgroud)

b)布尔成员:

type Pieces = Pawn | Knight | Bishop | Rook | Queen | King
    member x.IsCapturable = match x with King -> false | _ -> true
Run Code Online (Sandbox Code Playgroud)