无法解构函子(模块)

Unable to destructure Functor(Module)

这种语法会非常有用——有什么原因导致它不起作用吗?谢谢!

module Foo = {
  let bar: string = "bar"
};

let bar = Foo.bar; /* works */
let { bar } = Foo; /* Unbound record field bar */

Try it online!

无法解构 OCaml/Reason 中的模块。

等效的 OCaml 代码在第 3 行产生语法错误

module Foo = struct let bar: string = "bar" end
let bar = Foo.bar
let struct bar end = Foo

File "", line 3, characters 4-10: Error: Syntax error

如果您可以将 Foo 中指定的 所有 值放入本地范围,那么您可以使用 open Foohttps://reasonml.github.io/try.html?reason=LYewJgrgNgpgBAMRCOBeOBvOsAucBGAhgE4BccAzjsQJYB2A5mnAERHEtwC+A3AFAgADjDqJk-AFIUAdFBAMAFOwCUQA

module Foo = { let bar: string = "bar" };
open Foo;
Js.log(bar)

如果您还想通过当前模块导出导出 Foo 中的所有定义,您可以 include Foohttps://reasonml.github.io/try.html?reason=LYewJgrgNgpgBAMRCOBeOBvOsAucBGAhgE4BccAzjsQJYB2A5mnAERHEtwC+A3AFD0AxlAhh4SEPwBSFAHRQQDABTsAlEA

module Foo = { let bar: string = "bar" };
include Foo;
Js.log(bar)

最接近的做法是这样的:

module Foo = {
  let bar = "bar";
  let baz = "baz";
};

let (bar, baz) = Foo.(bar, baz);