2010-06-13 78 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