访问OCaml记录
问题描述:
如何使用某些其他文件中定义的OCaml记录?例如说我有,我定义了R录制文件a.ml:访问OCaml记录
type r = { i: int; j: int; };
,并在其中我想使用R录制文件b.ml。类似这样的:
let s = {i = 12; j = 15;}
显然不起作用 - 我知道它与访问定义记录的模块有关,但我还没有得到正确的语法。
答
在a.ml规定的类型和值活在模块A.所以,你需要或者open A
(从而使所有的定义从A到范围)或参阅i
和j
为A.i
和A.j
分别。
啊,嗯,好的...对我来说这不是这样工作,因为我做的是这样的:a.ml会保存记录定义,a.mli不会保存与该记录相关的任何内容,而我试图从b.ml中访问记录。如何处理这种情况 - 在界面中定义记录?无论哪种方式,谢谢你的答案。 – hyperboreean 2010-06-13 18:23:38
是的,打算从其他文件中使用的类型定义是接口的一部分,所以如果有mli文件,它们需要在mli文件中。 – sepp2k 2010-06-13 18:45:48