在F#程序中,我更喜欢使用
[<RequireQualifiedAccess>]
type MyType =
| FirstOption of string
| SecondOption of int
因此,在使用MyType
的代码中,我被迫编写MyType.FirstOption
而不是FirstOption
。有没有办法在OCaml中强制执行此操作?
答案 0 :(得分:4)
通过定义模块中的类型,您可以获得类似的效果。
$ 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。