Computer >> कंप्यूटर ट्यूटोरियल >  >> स्मार्टफोन्स >> iPhone

Swift में फंक्शन कंपोजिशन में महारत हासिल करें: एक संक्षिप्त गाइड

प्रोग्रामर्स हर दिन फंक्शन्स का सामना करते हैं। एक फ़ंक्शन एक विशेष प्रकार के संबंध का प्रतिनिधित्व करता है: फ़ंक्शन द्वारा लिया गया प्रत्येक इनपुट मान किसी आउटपुट मान से जुड़ा होता है। तो अधिक सामान्य तरीके से, एक फ़ंक्शन एक नियम है जो कुछ इनपुट मानों को एक आउटपुट मान पर मैप करता है।

Swift में फंक्शन कंपोजिशन में महारत हासिल करें: एक संक्षिप्त गाइड
फंक्शन कंपोजिशन

शुरुआत करना

आइए गणितीय अवधारणा के साथ इस पर चर्चा करें। उपरोक्त आरेख में, "f" और "g" दो फ़ंक्शन हैं। हम फ़ंक्शंस को नीचे के रूप में दर्शा सकते हैं:

f: A -> B g: B -> C

यदि हम इन दो फ़ंक्शंस की कंपोजिशन करते हैं, तो हम इसे "g o f" के रूप में दर्शा सकते हैं (आप कह सकते हैं g of f)।

(g o f): A -> C ऐसे कि (g o f)(a) = g(f(a)) A में सभी a के लिए

आइए एक सरल उदाहरण के साथ इसे और अधिक एक्सप्लोर करें:

मान लें f(a) = 2a + 3 & g(a) = 3a + 5, तो फ़ंक्शन कंपोजिशन
(g o f)(a) = g(f(a)) = 3(f(a)) + 5 = 3(2a + 3) + 5 = 6a + 14

यह अवधारणा न केवल गणित में लागू होती है — हम इसे प्रोग्रामिंग भाषाओं में भी लागू कर सकते हैं। उन भाषाओं को फंक्शनल प्रोग्रामिंग भाषाएं कहा जाता है। इस अवधारणा को समझने से आपकी कोड पठनीयता में सुधार होता है और यह अन्य प्रोग्रामर्स के लिए समझना आसान हो जाता है।

Swift का परिचय एक फंक्शनल प्रोग्रामिंग भाषा के रूप में

अब, अच्छी खबर यह है कि Swift भी एक फंक्शनल प्रोग्रामिंग भाषा है। Swift प्रोग्रामिंग में, एक फ़ंक्शन की सबसे महत्वपूर्ण भूमिका होती है, इसलिए आप दैनिक रूप से उनके साथ इंटरैक्ट करेंगे। एक Swift फ़ंक्शन एक मान वापस कर सकता है, और फिर हम वापस किए गए मान को दूसरे फ़ंक्शन में इनपुट के रूप में उपयोग कर सकते हैं। यह एक सामान्य प्रोग्रामिंग अभ्यास है।

Swift में फ़ंक्शन कंपोजिशन लागू करना

मान लें हमारे पास पूर्णांकों की एक सरणी है, और हम चाहते हैं कि आउटपुट अद्वितीय सम पूर्णांकों की एक वर्ग सरणी हो। तो सामान्य रूप से, हम फ़ंक्शंस को नीचे की तरह लागू करेंगे:

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

तो यहां फ़ंक्शन कंपोजिशन हमें उपरोक्त सभी समस्याओं से बचाने के लिए आता है। हम जेनेरिक्स, क्लोजर, और इन्फिक्स ऑपरेटर का लाभ उठाकर फ़ंक्शन कंपोजिशन प्राप्त कर सकते हैं।

तो आइए देखें कि उपरोक्त कोड ब्लॉक में क्या हो रहा है:

  1. हमने एक कस्टम इन्फिक्स ऑपरेटर ">>>" घोषित किया है। इसमें बाएं जुड़ाव और प्रीसिडेंस ऑर्डर है जैसे + ऑपरेटर।
  2. हमने एक फ़ंक्शन घोषित किया है जिसका नाम इन्फिक्स ऑपरेटर के नाम के समान है। फ़ंक्शन तीन जेनेरिक्स T, U, V का उपयोग करता है और दो क्लोजर को इनपुट पैरामीटर के रूप में लेता है।
  3. बायां पैरामीटर एक क्लोजर है, और यह T प्रकार का इनपुट लेता है और U प्रकार का आउटपुट लौटाता है।
  4. दायां पैरामीटर भी एक क्लोजर है, और यह U प्रकार का इनपुट लेता है और V प्रकार का आउटपुट लौटाता है।
  5. अब, >>> फ़ंक्शन एक फ़ंक्शन या क्लोजर लौटाता है, जिसका प्रकार (T) → V है। आउटपुट क्लोजर T प्रकार का इनपुट लेता है और V प्रकार का आउटपुट लौटाता है। यहां बाएं पैरामीटर का आउटपुट दाएं पैरामीटर का इनपुट है।
left : (T) -> U right: (U) -> V
आउटपुट प्रकार: (T) -> V

यदि आप फ़ंक्शन कंपोजिशन के गणितीय प्रतिनिधित्व को समझते हैं, तो आप देख सकते हैं कि यह Swift के कार्यान्वयन के साथ बिल्कुल समान है।

6. फ़ंक्शन बॉडी में, यह दाएं पैरामीटर का परिणाम बाएं पैरामीटर पर लौटाता है।

अब यदि हम वही परिणाम चाहते हैं (अद्वितीय सम पूर्णांकों की एक वर्ग सरणी), तो हम फ़ंक्शन कंपोजिशन के साथ ऐसा कर सकते हैं।

यह फ़ंक्शंस की एक श्रृंखला है जो वही परिणाम लौटाती है। फ़ंक्शन क्रम अब वैसा दिखता है जैसा एक इंसान सोच सकता है। इसकी पठनीयता बेहतर है और सभी के लिए समझना आसान है।

पढ़ने के लिए धन्यवाद!

  1. जावास्क्रिप्ट में फ़ंक्शन बॉरोइंग जावास्क्रिप्ट में फ़ंक्शन बॉरोइंग

    call(), apply() और bind() का उपयोग जावास्क्रिप्ट में मेथड्स बॉरो करने के लिए किया जाता है। जावास्क्रिप्ट में मेथड्स बॉरो करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport&qu

  1. CSS rgba() फ़ंक्शन CSS rgba() फ़ंक्शन

    rgba() लाल, हरे, नीले और अल्फा के लिए RGBA रंग मान परिभाषित करता है। अल्फा रंग की अपारदर्शिता है यानी 0.0 और 1.0 के बीच की संख्या। यहां, 1.0 पूर्ण अपारदर्शी के लिए होगा। उदाहरण <!DOCTYPE html> <html> <head> <style> #demo1 { background-color: hsla(140, 100%, 50%

  1. C में fillpoly() फ़ंक्शन C में fillpoly() फ़ंक्शन

    अवधारणा अब हेडर फ़ाइल graphics.h में fillpoly() फ़ंक्शन होता है जिसे त्रिकोण, आयत, पंचभुज, षट्कोण आदि जैसे बहुभुज को बनाने और भरने के लिए लागू किया जाता है। इसलिए इस फ़ंक्शन को drawpoly() के समान तर्कों की आवश्यकता होती है। सिंटैक्स void fillpoly( int number, int *polypoints ); इस मामले में, number