] हालाँकि, यह व्यवहार फ़ंक्शन शाब्दिक में स्थानीय चर का उपयोग करते समय सुसंगत नहीं है। टेंक फंक () { यदि e: = पुनर्प्राप्त (); e! = nil { परिणाम = -1 Err = Errors.New (ई। (स्ट्रिंग)) } } () छड़() परिणाम = 100 गलत = nil वापस करना } फंक बार () { घबराहट ("घबराहट हुई") }
यह कोड अपेक्षित रूप से काम करता है, एक घबराहट से उबरने के बाद एक कस्टम त्रुटि संदेश के लिए परिणाम निर्धारित करता है। हालाँकि, यदि हम फ़ंक्शन शाब्दिक के भीतर स्थानीय चर का उपयोग करते हैं, तो व्यवहार बदलता है:
फंक फू () (int, त्रुटि) { var परिणाम int var इर त्रुटि टेंक फंक () { यदि e: = पुनर्प्राप्त (); e! = nil { परिणाम = -1 Err = Errors.New (ई। (स्ट्रिंग)) } } () छड़() परिणाम = 100 गलत = nil वापसी परिणाम, गलत } फंक बार () { घबराहट ("घबराहट हुई") }
इस मामले में, परिणाम -1 के बजाय 0 पर रीसेट है। इसका कारण यह है कि फ़ंक्शन शाब्दिक में DEFF स्टेटमेंट नामित रिटर्न मानों को एक्सेस या संशोधित नहीं कर सकता है क्योंकि वे अब गुंजाइश में नहीं हैं। एक फ़ंक्शन शाब्दिक के भीतर एक defer स्टेटमेंट का उपयोग करके उन्हें संशोधित करने की कोशिश करते समय नामित रिटर्न मान का उपयोग करें। ऐसे मामलों में स्थानीय चर को एक्सेस या संशोधित नहीं किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3