[英]How can I load a ml file in toplevel of OCaml, just like `use mine.sml` in SML/NJ?
[英]How can I use a type defined in another .ml file in OCaml?
假設我有兩個.ml
文件: A.ml
和B.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_ary
在B.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.