2010-06-13 160 views
5

如何使用某些其他文件中定義的OCaml記錄?例如說我有,我定義了R錄製文件a.ml:訪問OCaml記錄

type r = { i: int; j: int; };

,並在其中我想使用R錄製文件b.ml。類似這樣的:

let s = {i = 12; j = 15;}顯然不起作用 - 我知道它與訪問定義記錄的模塊有關,但我還沒有得到正確的語法。

回答

8

在a.ml規定的類型和值活在模塊A.所以,你需要或者open A(從而使所有的定義從A到範圍)或參閱ijA.iA.j分別。

+0

啊,嗯,好的...對我來說這不是這樣工作,因爲我做的是這樣的:a.ml會保存記錄定義,a.mli不會保存與該記錄相關的任何內容,而我試圖從b.ml中訪問記錄。如何處理這種情況 - 在界面中定義記錄?無論哪種方式,謝謝你的答案。 – hyperboreean 2010-06-13 18:23:38

+2

是的,打算從其他文件中使用的類型定義是接口的一部分,所以如果有mli文件,它們需要在mli文件中。 – sepp2k 2010-06-13 18:45:48