F# 中的 DU 是否有等效于 [<RequireQualifiedAccess>] 属性的 OCaml?
Is there an OCaml equivalent of the [<RequireQualifiedAccess>] attribute for DUs in F#?
我更喜欢在 F# 程序中使用
[<RequireQualifiedAccess>]
type MyType =
| FirstOption of string
| SecondOption of int
所以在使用 MyType
的代码中我不得不写 MyType.FirstOption
而不是 FirstOption
。有没有办法在 OCaml 中强制执行此操作?
您可以通过在模块中定义类型来获得类似的效果。
$ ocaml
OCaml version 4.02.1
# module MyType = struct
type t = FirstOption of string | SecondOption of int
end ;;
module MyType : sig type t = FirstOption of string | SecondOption of int end
# MyType.FirstOption "abc";;
- : MyType.t = MyType.FirstOption "abc"
# FirstOption "abc";;
Error: Unbound constructor FirstOption
#
如果你这样做,类型的名称(如你所见)是 MyType.t。
我更喜欢在 F# 程序中使用
[<RequireQualifiedAccess>]
type MyType =
| FirstOption of string
| SecondOption of int
所以在使用 MyType
的代码中我不得不写 MyType.FirstOption
而不是 FirstOption
。有没有办法在 OCaml 中强制执行此操作?
您可以通过在模块中定义类型来获得类似的效果。
$ ocaml
OCaml version 4.02.1
# module MyType = struct
type t = FirstOption of string | SecondOption of int
end ;;
module MyType : sig type t = FirstOption of string | SecondOption of int end
# MyType.FirstOption "abc";;
- : MyType.t = MyType.FirstOption "abc"
# FirstOption "abc";;
Error: Unbound constructor FirstOption
#
如果你这样做,类型的名称(如你所见)是 MyType.t。