2012-02-07 9 views
5

मेरे पास त्वरित एडीए प्रश्न है। अगर मेरे पास एक प्रक्रिया है जहां मैं एक चर के लिए लिख सकता हूं, या मैं इसे अकेला छोड़ सकता हूं, तो यह Out पैरामीटर या In Out पैरामीटर होना चाहिए? मुझे लगता है कि यह सवाल उठता है:एडीए में आउट/आउट बनाम

कॉलर क्या देखता है कि यह Out के रूप में पैरामीटर के साथ प्रक्रिया को कॉल करता है लेकिन प्रक्रिया पैरामीटर को स्पर्श नहीं करती है। क्या यह वही मूल्य देखता है? अपरिभाषित व्यवहार?

कंपाइलर शिकायत नहीं करता है क्योंकि यह Out परिवर्तनीय को असाइनमेंट देखता है ... यह केवल एक सशर्त में होता है, जहां यह नहीं पहुंचा जा सकता है, और संकलक सभी पथों की जांच करने के लिए परेशान नहीं होता है।

मुझे संदेह है कि सुरक्षित शर्त In Out के रूप में पैरामीटर को चिह्नित कर रही है, लेकिन मुझे यह जानना है कि यह आवश्यक है या स्टाइलिस्टिक रूप से बेहतर है।

धन्यवाद!

-prelic

उत्तर

11

एडीए में, जब एक out पैरामीटर के साथ एक प्रक्रिया है जो पैरामीटर के लिए कुछ भी लिखना नहीं करता है, परिणाम फोन करने वाले के लिए वापस पारित कर दिया कुछ अपरिभाषित है। इसका मतलब यह है कि कॉलर में उस चर में जो कुछ भी था, प्रक्रिया से वापसी पर कचरे से अधिलेखित हो जाता है।

एडा में सबसे अच्छा अभ्यास निश्चित रूप से प्रक्रिया की शुरुआत में उपयुक्त डिफ़ॉल्ट मान के साथ सभी out पैरामीटर शुरू करना है। इस तरह, प्रक्रिया डेटा से बाहर कोई भी कोड पथ वैध डेटा में कॉलर को वापस भेज दिया जाता है।

यदि आपके पास कॉलर में कुछ है जो किसी प्रक्रिया द्वारा बदला जा सकता है, तो आपको in out पैरामीटर का उपयोग करना होगा।

Ada 95 RM 6.4.1 (15) से:

किसी भी अन्य प्रकार के लिए, औपचारिक पैरामीटर अप्रारंभीकृत है। यदि समग्र है, औपचारिक के नाममात्र उपप्रकार के वास्तविक पैरामीटर का दृश्य रूपांतरण मूल्यांकन किया जाता है (जो Constraint_Error बढ़ा सकता है), और औपचारिक का वास्तविक उप प्रकार दृश्य रूपांतरण का है। यदि प्राथमिक, औपचारिक का वास्तविक उप प्रकार अपने नाममात्र उप प्रकार द्वारा दिया जाता है।

+0

धन्यवाद! यहां कुछ और प्रतिनिधि हैं, ऐसा लगता है कि आपको इसकी जरुरत है;) – prelic