F# RequireQualifiedAccess

示例

使用该RequireQualifiedAccess属性,工会案例必须被称为MyUnion.MyCase而不是just MyCase。这样可以防止在封闭的名称空间或模块中发生名称冲突:

type [<RequireQualifiedAccess>] Requirements =
    None | Single | All

// 使用具有合格访问权限的DU
let noRequirements = Requirements.None

// 这里,“无”仍指标准的F#选项情况
let getNothing () = None

// 编译器错误,除非已在所有其他地方定义了All
let invalid = All

例如,如果System已打开,请Single参阅System.Single。与工会的案件没有冲突Requirements.Single。