मेरे फ़ोल्डर कई फ़ाइलें हैं, जो इस क्रम में संकलित किया गया है के लिए: 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 = 5
के बजाय f = 0
लेता है।
क्या आपको लगता है कि यह व्यवहार सामान्य है? यदि हां, तो मुझे !g1
के वर्तमान मूल्य को ध्यान में रखने के लिए, मुझे क्या बदलना चाहिए?
पीएस: शायद एक समाधान let f v = v
को zone.ml
में बनाना है तो main
Zone.f !g1
पर कॉल करें। लेकिन मेरे पास g1
global.ml
में कई वैश्विक संदर्भ चर हैं, मुझे उम्मीद है कि वे सभी फाइलों और कार्यों पर मान्य हो सकते हैं, और मैं उन्हें किसी फ़ंक्शन के हस्ताक्षर में शामिल नहीं करना चाहता हूं।
आपकी टिप्पणी के लिए धन्यवाद, आपने समझाया कि ऐसा क्यों होता है, लेकिन आपने इसे हल करने की व्याख्या नहीं की है ... मैं इन फ़ाइलों के संकलन के क्रम को नहीं बदल सकता, मैं और क्या कर सकता हूं? – SoftTimur
मैंने कुछ सुझावों के साथ ** संपादित ** जोड़ा। लेकिन यह जानना मुश्किल है कि आपके कोड के बारे में और जानने के बिना क्या सुझाव देना है। –