2010-06-13 10 views
5

Jak mogę użyć jakiegoś rekordu OCaml, który zdefiniowałem w innym pliku? Na przykład powiedzieć, że mam pliku a.ml w którym mogę zdefiniować rekord R:uzyskiwanie dostępu do rekordów OCaml

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

i plik b.ml w którym chcę użyć rekordu r. Coś takiego:

let s = {i = 12; j = 15;} wyraźnie nie działa - wiem, że ma to coś wspólnego z dostępem do modułu, w którym jest zdefiniowany rekord, ale jeszcze nie mam odpowiedniej składni.

Odpowiedz

8

Rodzaje i wartości określone w a.ml żyć w module A. Więc trzeba albo open A (tym samym przynosząc wszystkie definicje z punktu A do zakresu) lub odnoszą się do i i j jak A.i i A.j odpowiednio.

+0

Ah, hmm, ok ... dla mnie to nie działało w ten sposób, ponieważ robiłem coś w stylu: a.ml trzymałoby definicję rekordu, a.mli nie posiadałoby niczego związanego z tą płytą, a ja próbował uzyskać dostęp do rekordu z b.ml. Jak by to było z takim przypadkiem - zdefiniować rekord w interfejsie? Tak czy inaczej, dziękuję za odpowiedź. – hyperboreean

+2

Tak, definicje typów, które mają być używane z innych plików, są częścią interfejsu, więc muszą znajdować się w pliku mli, jeśli taki istnieje. – sepp2k