प्रतिनिधियों ने बस first class functions का कार्यान्वयन किया है और Higher Order Functions प्रदान करने के लिए भाषाओं का उपयोग करने की अनुमति दी है।
शैली की इस तरह के सिद्धांत लाभ यह है कि आम पहलुओं एक समारोह जो करता है बस यह करने के लिए (उदाहरण के एक डेटा संरचना traversing के लिए) की जरूरत है क्या में बाहर निकाला जा सकता है और एक और समारोह (या कार्यों) प्रदान की जाती है यह है कि है कुछ ऐसा करने के लिए कहा जाता है जैसे यह साथ जाता है।
कैननिकल कार्यात्मक उदाहरण map और fold हैं जिन्हें किसी अन्य ऑपरेशन के प्रावधान से सभी प्रकार की चीजों को बदलने के लिए बदला जा सकता है।
यदि आप टी की एक सूची जोड़ना चाहते हैं और कुछ फ़ंक्शन जोड़ना चाहते हैं जो दो टी लेता है और उन्हें एक साथ जोड़ता है (आंशिक अनुप्रयोग के माध्यम से) fold add 0
योग बन जाता है। fold multiply 1
उत्पाद बन जाएगा, fold max 0
अधिकतम। इन सभी उदाहरणों में प्रोग्रामर को इनपुट डेटा पर पुन: प्रयास करने के बारे में नहीं सोचना चाहिए, इनपुट की खाली होने पर क्या करना है इसके बारे में चिंता न करें।
ये सरल उदाहरण हैं (हालांकि वे दूसरों के साथ मिलकर आश्चर्यजनक रूप से शक्तिशाली हो सकते हैं) लेकिन पेड़ ट्रैवर्सल (एक अधिक जटिल कार्य) पर विचार करें, जिनमें से सभी को treefold
फ़ंक्शन के पीछे समेकित किया जा सकता है। पेड़ के गुना समारोह का लेखन कठिन हो सकता है, लेकिन एक बार किया जाने पर इसे बग के बारे में चिंता किए बिना व्यापक रूप से फिर से उपयोग किया जा सकता है।
यह परंपरागत अनिवार्य भाषाओं के लिए फ़ोरैच लूप संरचनाओं को जोड़ने के लिए अवधारणा और डिजाइन में समान है, यह विचार है कि आपको लूप नियंत्रण स्वयं लिखना नहीं है (क्योंकि यह एक त्रुटियों से दूर होने का मौका देता है, शब्दाडंबर है कि आप प्रत्येक प्रविष्टि के बजाय दिखा कैसे आप प्रत्येक प्रविष्टि हो रही है करने के लिए क्या कर रहे हैं के रास्ते में हो जाता है बढ़ जाती है। उच्च आदेश कार्यों बस, जबकि भीतर extensibly traversing आप क्या करना है से एक संरचना के ट्रेवर्सल अलग करने के लिए अनुमति देते हैं स्वयं भाषा।
यह ध्यान देने योग्य है कि सी # में प्रतिनिधियों को काफी हद तक lambdas ने ले लिया है, क्योंकि संकलक बस इलाज कर सकते हैं यह कम वर्बोज़ प्रतिनिधि के रूप में यदि यह चाहता है लेकिन अभिव्यक्ति से गुज़रने के लिए भी स्वतंत्र है, तो लैम्ब्डा उस कार्य को दर्शाता है जो इसे किसी अन्य डोमेन में इच्छा की अनुमति (अक्सर जटिल) पुनर्गठन या फिर से लक्षित करने के लिए पारित किया जाता है। लिंक-टू-एसक्यूएल के माध्यम से डेटाबेस प्रश्नों की तरह।
सी-स्टाइल फ़ंक्शन पॉइंटर्स पर .NET प्रतिनिधि मॉडल का एक सिद्धांत लाभ यह है कि वे वास्तव में एक टुपल (डेटा के दो टुकड़े) कॉल करने के लिए फ़ंक्शन और वैकल्पिक ऑब्जेक्ट पर फ़ंक्शन कहलाते हैं। यह आप राज्य जो भी अधिक शक्तिशाली है के साथ काम करता है के बारे में पारित करने के लिए अनुमति देता है। चूंकि संकलक इसका उपयोग कर सकते अपनी पीठ (1) के पीछे कक्षाओं के निर्माण के लिए, इस वर्ग का एक नया उदाहरण का दृष्टांत और यह इस प्रकार closures की इजाजत दी में स्थानीय चर जगह।
(1) यह नहीं हमेशा यह करने के लिए करता है, लेकिन अब के लिए है कि एक कार्यान्वयन विस्तार
आह है, इस बात का डोनिस मार्शल के विज़ुअल सी # 2008 पहला उदाहरण है ...वास्तव में एक उचित पहले नमस्ते विश्व उदाहरण नहीं है, लेकिन फिर भी ... –
नहीं, मैंने इसे एक ही लेखक के लिए "प्रोग्रामिंग माइक्रोसॉफ्ट विजुअल सी # 2005: द भाषा" पर पाया, अच्छा है कि उसने सी # 2008 के लिए एक नया संस्करण बनाया है, मेरे पास एक होगा इसे देखें –
आपने अभी पेंडोरा के बॉक्स को खोला है :) – Gishu