簡體   English   中英

如何使用OCaml的另一個.ml文件中定義的類型?

[英]How can I use a type defined in another .ml file in OCaml?

假設我有兩個.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

但是編譯器會出現這樣的錯誤: Error: Unbound record field label id_ary

看來B不能使用A的類型my_type

我該怎么辦?

值得一提的是,你可以只使用A.id_aryB.ml 使用open是避免重復A.的便利。 但是,由於open將兩個命名空間合並在一起,因此它也是一件相當艱巨的事情。 我個人嘗試避免使用open除了我的項目中的一些非常基本的模塊以外。

最新的OCaml版本具有兩個標記的“本地化”打開:

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

這些都沒有那么激烈,與全球open相比,我更喜歡它們。

在B.ml的開頭添加open A

同樣,請注意,使用以下代碼構建代碼將更加方便: ocamlbuild B.native (但是,您必須清理代碼目錄)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM