так что я пытаюсь определить статическую (глобальную) переменную в module
.Как определить статическую переменную в модуле?
Я часто использовал class
при программировании в OCaml
. И теперь, когда я пытаюсь использовать Module
систему, я просто понять, я не знаю, как определить статический (глобальный) переменной в OCaml
.. Позор мне ..
Вот пример:
module Util = struct
let l = ref []
let get_l =
!l
let set_l x =
l := x::!l
end
open Util
let() =
let() = set_l 1 in
let() = set_l 2 in
print_int (List.length get_l)
ИМХО, функция повторного вызова set_l
создаст новый экземпляр l
, который не то, что мне нужно ..
Может кто-нибудь дать мне руководство по определении static
переменной в module
?
Спасибо @ivg .. Я не ожидал, что это окажется ошибкой ... – computereasy
@computereasy это не ошибка ocaml! В одном случае 'get_l' представляет собой просто значение (которое вычисляется при его определении) и является неизменным, поэтому оно не должно давать вам обновленный' l'. В версии @ivg используется функция, которая может искать текущее значение, обозначенное буквой 'l'. –