Объявления и глобальные ссылочные переменные для нескольких файлов

Моя папка содержит несколько файлов, которые скомпилированы в следующем порядке: global.ml , zone.ml , abs.ml ], main.ml

global.ml содержит некоторые ссылочные переменные (например, let g1 = ref 0 ) для всех файлов.

В zone.ml есть объявление let f =! G1 .

В abs.ml есть g1: = 5 , который будет запускаться main в начале выполнения, я считаю это как инициализация g1 с учетом реального контекста времени выполнения.

Позже main вызовет Zone.f . Любопытно, что я понимаю, что требуется f = 0 вместо f = 5 .

Считаете ли вы такое поведение нормальным? Если да, что я должен изменить, чтобы он учитывал текущее значение ! G1 ?

PS: Может быть, одним из решений является создание функции let fv = v в zone.ml тогда пусть main вызывает Zone.f! g1 . Но у меня есть несколько глобальных ссылочных переменных, таких как g1 в global.ml , я надеюсь, что они могут быть действительны для всех файлов и функций, и я не хочу, чтобы они были задействованы в подпись функции.

5
задан SoftTimur 5 February 2012 в 13:31
поделиться