लैम्ब्डा अभिव्यक्ति कोड को सरल बनाने के लिए मौजूद है। यह:
auto fun = []() { return; };
साथ संकलक द्वारा बदल दिया है:
// Namespace scope
struct __lambda_1 {
void operator()() { return; }
};
// local scope
__lambda_1 fun{};
यह लैम्ब्डा वाक्य रचना के लिए प्राथमिक प्रेरणा है: पारंपरिक समारोह के लिए एक आसान के साथ वस्तुओं गुमनाम समारोह स्थल जहां पर घोषित कर दिया पढ़ने के लिए बदलने के लिए एक अलग कार्य वस्तु होने की बजाय इसकी आवश्यकता है, जिसे किसी अन्य दायरे में घोषित किया जाना चाहिए। यह नामित फ़ंक्शन ऑब्जेक्ट्स को प्रतिस्थापित करने के लिए नहीं है।
दरअसल, मानक पुस्तकालय में std::unary_function
और std::less
जैसी कई नामांकित फ़ंक्शन ऑब्जेक्ट्स शामिल हैं। लेकिन इन वस्तुओं में सीमित उपयोगिता है और लैम्ब्डा की हर संभावित भूमिका को नहीं ले सकता है।
तो, हाँ, यह कोड काफी अधिक पठनीय बना सकते हैं, कोड है कि मानक पुस्तकालय ठीक प्रदान नहीं करता है रखने, जहां यह आवश्यक है द्वारा आप नाम के साथ struct
रों दर्जन लाइन के साथ अपने कोड को प्रदूषित करने और अपने नेमस्पेस को दूषित बिना ' शायद एक या दो बार से अधिक का उपयोग नहीं करेंगे।
लैम्ब्डा संस्करण लंबा नहीं है। गैर-लैम्ब्डा अधूरा है, क्योंकि हमारे पास 'Less_than' की परिभाषा नहीं है। –
वह कैसे है 'Less_than (x) 'a" सामान्य फ़ंक्शन परिभाषा "??? आपके पहले उदाहरण के आधार पर, ऐसा लगता है कि आपको 'x' के मान को दो-पैरामीटर तुलनित्र मज़ेदार को बांधना होगा, इसे एकल-पैरामीटर तुलनित्र में परिवर्तित करना होगा। यह पहले से ही कार्यक्षमता है जो "सामान्य कार्य परिभाषा" से काफी दूर है। –
AnT