इस लेख में, आप स्विफ्ट में नेस्टेड फ़ंक्शन के बारे में जानेंगे और यह उदाहरणों के साथ कैसे काम करता है।
यदि कोई फ़ंक्शन किसी अन्य फ़ंक्शन के शरीर के अंदर मौजूद है, तो इसे नेस्टेड फ़ंक्शन कहा जाता है।
एक नेस्टेड फ़ंक्शन का सिंटैक्स
func funcname () (बाहरी फ़ंक्शन के स्टेटमेंट func otherFuncname () (// आंतरिक फ़ंक्शन के कथन)
यहां, फ़ंक्शन anotherFuncname
दूसरे फ़ंक्शन के शरीर के अंदर है funcname
।
यह ध्यान दिया जाना चाहिए कि, आंतरिक कार्यों को केवल एन्क्लोजिंग फ़ंक्शन (बाहरी फ़ंक्शन) के अंदर बुलाया और उपयोग किया जा सकता है।
उदाहरण 1: वापसी मानों के बिना नेस्टेड फ़ंक्शन
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
अस्सलाम ओ अलैकुम! जैक
उपरोक्त कार्यक्रम में, नेस्टेड फ़ंक्शन addGreetingAndPrint()
को एनक्लोजिंग फ़ंक्शन से बुलाया जा रहा है outputMessageByGreeting()
।
स्टेटमेंट outputMessageByGreeting("Jack")
बाहरी फ़ंक्शन को कॉल करता है। और addGreetingAndPrint()
बाहरी फ़ंक्शन के अंदर स्टेटमेंट उस पद्धति को कॉल करता है जो हैलो को आउटपुट करता है ! कंसोल में जैक ।
आप फ़ंक्शन को फ़ंक्शन के addGreetingAndPrint
बाहर कॉल नहीं कर सकते outputMessageByGreeting
।
उदाहरण 2: मापदंडों और वापसी मूल्यों के साथ नेस्टेड फ़ंक्शन
नेस्टेड फ़ंक्शंस में पैरामीटर और रिटर्न मान के साथ फ़ंक्शंस हो सकते हैं।
func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result)
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
५
उपरोक्त कार्यक्रम में,
- बाहरी फ़ंक्शन
operate()
प्रकार फ़ंक्शन के रिटर्न मान के साथ है(Int,Int) -> Int
। - और आंतरिक (नेस्टेड) कार्य हैं
add()
औरsubtract()
।
नेस्टेड फ़ंक्शन add()
और subtract()
एक तरह से एनक्लोजिंग फ़ंक्शन के बाहर उपयोग किया जा रहा है operate()
। यह संभव है क्योंकि बाहरी फ़ंक्शन इनमें से एक फ़ंक्शन देता है।
हम enclosing समारोह के बाहर भीतरी समारोह का उपयोग किया है operate()
के रूप में operation(2, 3)
। प्रोग्राम आंतरिक रूप से कॉल करता है add(2, 3)
जो कंसोल में 5 आउटपुट करता है।