gpt4 book ai didi

f# - 为什么 RequireQualifiedAccess 不起作用,导致编译错误,但如果我使用 open 则不行?

转载 作者:行者123 更新时间:2023-12-04 12:39:58 26 4
gpt4 key购买 nike

我遇到了 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 ,然后它给出一个错误 SomeCase没有定义。

我一直相信使用 open X相当于为 X. 添加前缀来自该模块的所有定义。但显然不是……?

这里发生了什么?尽管 RequireQualifiedAccess,我是否必须避免这种名称冲突? ?这是编译器错误吗?

最佳答案

关于f# - 为什么 RequireQualifiedAccess 不起作用,导致编译错误,但如果我使用 open 则不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com