thư mục My chứa nhiều file, được biên soạn theo thứ tự này: global.ml
, zone.ml
, abs.ml
, main.ml
Tuyên bố và biến tham khảo toàn cầu trong vài file
global.ml
chứa một số biến tài liệu tham khảo (ví dụ let g1 = ref 0
) cho tất cả các tập tin.
Trong zone.ml
có tuyên bố let f = !g1
.
Trong abs.ml
, có g1 := 5
, mà sẽ được điều hành bởi main
vào đầu thời gian chạy, tôi coi nó như một khởi của g1
cho thời gian chạy thực bối cảnh.
Sau đó main
sẽ gọi Zone.f
. Thật kỳ lạ, những gì tôi nhận ra là phải mất f = 0
thay vì f = 5
.
Bạn có nghĩ hành vi này là bình thường không? Nếu vậy, tôi nên thay đổi điều gì, để làm cho giá trị hiện tại của !g1
vào tài khoản?
PS: Có thể một giải pháp là tạo một hàm let f v = v
trong zone.ml
rồi để main
gọi Zone.f !g1
. Nhưng tôi có một số biến tham chiếu toàn cầu là g1
trong global.ml
, tôi hy vọng chúng có thể hợp lệ trên tất cả các tệp và chức năng và tôi không muốn khiến chúng tham gia vào chữ ký của hàm.
Cám ơn nhận xét của bạn, bạn giải thích lý do tại sao nó xảy ra, nhưng bạn đã không giải thích làm thế nào để giải quyết nó ... Tôi không thể thay đổi thứ tự biên soạn những tập tin này, tôi có thể làm gì khác? – SoftTimur
Tôi đã thêm ** Chỉnh sửa ** với một số đề xuất. Nhưng thật khó để biết nên đề xuất gì mà không cần biết thêm về mã của bạn. –