0

2 つのファイルがあるとします。

foo.re
bar.re

私が今持っているとしましょうbar.re

open MyProject.Foo;

これはコンパイルに失敗します:

This module is not a structure; it has type
  (module MyProject.Foo)

コンパイルを再実行すると、すべて正常に動作します

その行をopen Foo;すべてに変更すると、正常にコンパイルされます。

なぜ私はこの行動を観察しているのですか?

4

1 に答える 1

0

ReasonML は各ファイルをモジュールとして扱います。慣例では、ファイル名を大文字にします。

Foo.re
Bar.re

また、Foo call bar で関数を定義し、Bar call foo で別の関数を定義するとします。

したがって、次のようになります。

/* Inside Foo.re */
let bar = string => {}

/* Inside Bar.re */
let foo = string => {} 

Main.re と呼ばれる別のモジュールから、上記を次のように参照できます。

let myResult = Foo.bar("happy");
let ourResult = Bar.foo("days);

また

open Foo, Bar;

let myResult = bar("happy");
let ourResult = foo("days");

したがって、 を求められたときopen MyProject.Foo、存在しないモジュール MyProject 内のサブモジュール Foo を求めていました。もちろん、MyProject.reモジュールを作成してそのファイルに追加した場合はFooopen MyProject.Foo正常に動作します。

さらなる参考文献:

reasonML モジュールが基づいている基礎となるOcaml 。ReasonML に関する Axel Rauschmayer ブックのBasic modulesセクション

于 2018-07-23T13:14:13.273 に答える