0

2つのファイルがあると仮定し.mlます:A.mlB.ml


A.ml、私は持っています

type my_type = {id_ary : int array; sz_ary : int array};;

B.ml、私は持っています

let test_my_type {id_ary;_} = id_ary.(0) <- 10;;

それから私はそれらをこのように編集しました

ocamlc -linkpkg A.ml B.ml -o C

しかし、complierはそのようなエラーを出します:Error: Unbound record field label id_ary

からBのタイプは使用できないようです。my_typeA

私は何をすべきか?

4

2 に答える 2

6

で使用できることに注意してA.id_aryくださいB.ml。を使用するopenと、繰り返しを避けるのに便利A.です。ただし、openこれは 2 つの名前空間をマージするため、かなり抜本的な作業でもあります。open私は個人的に、プロジェクトのいくつかの非常に基本的なモジュールを除いて、使用を避けようとしています。

最近の OCaml のバージョンには、「ローカライズされた」オープン ファイルがあり、次の 2 つの表記法があります。

# String.(length "abc");;
- : int = 3
# let open String in length "abc";;
- : int = 3

これらはそれほど抜本的ではなく、グローバルよりも好ましいと思いopenます。

于 2013-02-07T21:21:44.250 に答える
1

open AB.ml の先頭に追加

また、注意してください。コードをビルドする方が便利です: ocamlbuild B.native (ただし、コード ディレクトリをクリーンアップする必要があります)。

于 2013-02-07T21:07:11.763 に答える