我们可以在OCaml中的函数内定义类型吗?

Man*_*iya 8 ocaml

我是OCaml的新手.我想定义一个仅在一个函数中使用的类型.我不想让它在该功能之外可用.我们可以在该函数中定义它吗?或者还有其他方法可以实现相同的目标吗?

gsg*_*gsg 12

如果您有最新版本的OCaml,则可以使用本地模块:

let f x =
  let module Local = struct
    type t = A | B
  end in
  ...
Run Code Online (Sandbox Code Playgroud)

在顶层定义类型可能更自然,只是将它排除在外.mli:尽管它会保持全局隐藏,尽管它对文件中的其他代码是可见的.

  • 您可以打开本地模块. (3认同)