我遇到了RequireQualifiedAccess的问题:尽管有这个属性,但工会案例正在影响一个类型。奇怪的是,如果我在封闭模块上使用合格访问权限,而不是在封闭模块内部或打开它时,则只会出现错误:
module Module =
type [<RequireQualifiedAccess>] Du =
| SomeCase
type [<RequireQualifiedAccess>] SuperDu =
| Du of Du
let valid = Du.SomeCase // Valid, as expected
let invalid = Module.Du.SomeCase // Not defined?!?
open Module
let validToo = Du.SomeCase // Wait, this is valid again?
在无效行中,首先警告不要使用.Du
没有限定访问权限,就像我引用SuperDu.Du
一样,然后它会出错{{1没有定义。
我一直认为使用SomeCase
相当于将open X
添加到从该模块中获取的所有定义的前缀。但它显然不是......?
这里发生了什么?尽管X.
,我是否必须避免这种名称冲突?这是编译器错误吗?
答案 0 :(得分:3)