Java में लैम्ब्डा एक्सप्रेशन्स का उपयोग कैसे करें
क्या आपने कभी सोचा है कि कुछ मेथड्स एक लाइन में फिट हो सकते हैं, अगर केवल उस वर्बोज़ Java सिंटैक्स के लिए नहीं जिसे आपको मेथड घोषित करने के लिए उपयोग करना पड़ता है? आप अकेले नहीं हैं।
मेथड्स प्रोग्रामिंग में एक अविश्वसनीय रूप से उपयोगी फीचर हैं।
एक मेथड कोड का एक ब्लॉक होता है जो आपके प्रोग्राम में कुछ विशिष्ट करता है। उनका उपयोग इसलिए किया जाता है क्योंकि एक बार जब आप एक मेथड को परिभाषित कर लेते हैं, तो आप उसे कई बार कॉल कर सकते हैं। यह आपके कोड में redundancy को कम करने में मदद करता है, जो बदले में आपके कोड को बनाए रखना आसान बनाता है।
इस गाइड में, हम Java में लैम्ब्डा एक्सप्रेशन्स के बारे में बात करने जा रहे हैं। ये एक विशेष प्रकार के मेथड हैं जिनका उपयोग आप कर सकते हैं जिसे लैम्ब्डा एक्सप्रेशन कहा जाता है, जो एक फंक्शनल इंटरफ़ेस को इम्प्लीमेंट करता है। हम इस बारे में बात करेंगे कि वे कैसे काम करते हैं और उनका उपयोग क्यों किया जाता है।
फंक्शनल इंटरफ़ेस क्या है?
इससे पहले कि हम लैम्ब्डा एक्सप्रेशन्स के बारे में बात करें, आपको फंक्शनल इंटरफेसेस को समझना होगा। ये वे इंटरफेसेस हैं जिनमें केवल एक abstract मेथड होता है। एक फंक्शनल इंटरफ़ेस के भीतर निहित एक abstract मेथड इंटरफ़ेस के उद्देश्य को बताता है।
इस उदाहरण पर विचार करें:
interface CalculateThree { double multiply_by_three(String day); }
हमने CalculateThree नामक एक इंटरफ़ेस बनाया है। इस इंटरफ़ेस में केवल एक मेथड, multiply_by_three है, जिसका अर्थ है कि यह एक फंक्शनल इंटरफ़ेस है।
Java लैम्ब्डा एक्सप्रेशन क्या है?
एक लैम्ब्डा एक्सप्रेशन एक अनाम मेथड है। इसका उपयोग उस मेथड को इम्प्लीमेंट करने के लिए किया जाता है जिसे फंक्शनल इंटरफ़ेस के भीतर परिभाषित किया गया है। लैम्ब्डा एक्सप्रेशन्स को कभी-कभी अनाम मेथड्स कहा जाता है क्योंकि उनका कोई नाम नहीं होता।
लैम्ब्डा एक्सप्रेशन्स एरो ऑपरेटर का उपयोग करते हैं, जो उन्हें दो भागों में विभाजित करता है:
(parameter list) -> lambda body
बायाँ भाग उन पैरामीटर्स को समाहित करता है जिनका एक्सप्रेशन उपयोग करता है; दायाँ भाग वह कोड समाहित करता है जो लैम्ब्डा एक्सप्रेशन एक्जीक्यूट होने पर चलेगा। लैम्ब्डा फंक्शन्स एक पैरामीटर या एकाधिक पैरामीटर्स स्वीकार कर सकते हैं।
लैम्ब्डा एक्सप्रेशन का उपयोग कैसे करें
आइए एक प्रोग्राम बनाएं जो यूजर द्वारा डाले गए नंबर को लेता है और उसे तीन से गुणा करता है। हम यूजर से नंबर स्वीकार करने वाला कोड लिखकर शुरू करेंगे:
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner user_input = new Scanner(System.in); System.out.println("Insert a number to multiply by three: "); double user_number = user_input.nextDouble(); } }
जब हम इस कोड को चलाते हैं, तो हमारे यूजर को तीन से गुणा करने के लिए एक नंबर डालने के लिए कहा जाएगा। हमारा प्रोग्राम उस नंबर को "user_number" वेरिएबल में पढ़ेगा। आप Scanner क्लास कैसे काम करती है, इसके बारे में हमारे Java Scanner ट्यूटोरियल को पढ़कर अधिक जान सकते हैं।
अब, हम नंबर को तीन से गुणा करने के लिए एक लैम्ब्डा एक्सप्रेशन परिभाषित करने जा रहे हैं। अपने main मेथड के ऊपर निम्न कोड पेस्ट करें:
interface CalculateThree { double multiply_by_three(double number); }
यह कोड उस इंटरफ़ेस को परिभाषित करता है जिसे हमारा लैम्ब्डा एक्सप्रेशन संदर्भित करेगा। फिर क्लास में main मेथड के नीचे निम्न कोड जोड़ें:
CalculateThree multiply = (number) -> number * 3; double answer = multiply.multiply_by_three(user_number); System.out.println(user_number + " multiplied by three is " + answer);
हमने CalculateThree इंटरफ़ेस का उपयोग "multiply" नामक एक वेरिएबल घोषित करने के लिए किया है। यह हमारे लैम्ब्डा एक्सप्रेशन के लिए कोड स्टोर करता है। लैम्ब्डा एक्सप्रेशन हमारे CalculateThree इंटरफ़ेस में multiply_by_three से जुड़ा हुआ है क्योंकि multiply_by_three इंटरफ़ेस में एकमात्र फंक्शन है।
हमने तब इस फंक्शन को कॉल करने के लिए डॉट नोटेशन का उपयोग किया है:
multiply.multiply_by_three(user_number);
डॉट नोटेशन वह है जहां आप उस क्लास या इंटरफ़ेस का नाम निर्दिष्ट करते हैं जिसे आप संदर्भित करना चाहते हैं, उसके बाद एक डॉट, फिर उस मेथड का नाम जिसे आप एक्सेस करना चाहते हैं। इस मामले में, हम "multiply" इंटरफ़ेस के अंदर multiply_by_three मेथड को एक्सेस करना चाहते हैं।
हमारा अंतिम कोड इस तरह दिखता है:
import java.util.Scanner; interface CalculateThree { double multiply_by_three(double number); } class Main { public static void main(String args[]) { Scanner user_input = new Scanner(System.in); System.out.println("Insert a number to multiply by three: "); double user_number = user_input.nextDouble(); CalculateThree multiply = (number) -> number * 3; double answer = multiply.multiply_by_three(user_number); System.out.println(user_number + " multiplied by three is " + answer); } }
आइए अपना कोड चलाएं और गुणा करने के लिए नंबर 3 डालें:
Insert a number to multiply by three: 3 3.0 multiplied by three is 9.0
हमारे कोड ने हमारे द्वारा डाले गए नंबर को 3 से सफलतापूर्वक गुणा किया। यह क्रिया हमारे द्वारा परिभाषित लैम्ब्डा एक्सप्रेशन का उपयोग करके की गई थी।
ब्लॉक लैम्ब्डा एक्सप्रेशन का उपयोग कैसे करें
लैम्ब्डा एक्सप्रेशन्स दो रूपों में प्रकट हो सकते हैं: सिंगल एक्सप्रेशन्स का उपयोग करके, या ब्लॉक्स का उपयोग करके। ब्लॉक लैम्ब्डा सिंटैक्स का उपयोग तब किया जाता है जब एरो के दाईं ओर का कोड कई लाइन्स लेगा।
ब्लॉक सिंटैक्स वह है जहां आप लैम्ब्डा एक्सप्रेशन के दाईं ओर के कोड को कर्ली ब्रेसेस ({}) से घेरते हैं।
इस उदाहरण पर विचार करें:
interface GreetUser { String welcome_user(String name); } class Main { public static void main(String args[]) { GreetUser send_greeting = (name) -> { System.out.println("Good morning!"); System.out.println("Welcome, " + name); }; System.out.println(send_greeting.welcome_user("Brad")); } }
हमने send_greeting नामक एक लैम्ब्डा एक्सप्रेशन घोषित किया है। यह एक्सप्रेशन उस इंटरफ़ेस GreetUser को संदर्भित करता है जिसे हमने अपने प्रोग्राम की शुरुआत में परिभाषित किया था। हमारा लैम्ब्डा एक्सप्रेशन दो क्रियाएं करता है। यह:
- कंसोल पर "Good morning!" प्रिंट करता है
- कंसोल पर "Welcome, " के बाद यूजर का नाम प्रिंट करता है
चूंकि यह कोड की दो लाइन्स लेता है, हमने ब्लॉक सिंटैक्स का उपयोग किया है। हमारे लैम्ब्डा एक्सप्रेशन के दाईं ओर का कोड कर्ली ब्रेसेस के भीतर संलग्न है।
निष्कर्ष
लैम्ब्डा एक्सप्रेशन्स अनाम मेथड्स हैं जो एक फंक्शनल इंटरफ़ेस को इम्प्लीमेंट करते हैं। इन फंक्शन्स को कभी-कभी अनाम क्लास या फंक्शन्स कहा जाता है क्योंकि उनका कोई नाम नहीं होता और वे अपने आप एक्जीक्यूट नहीं होते।
क्या आप एक चुनौती के लिए तैयार हैं? एक लैम्ब्डा एक्सप्रेशन लिखें जो जांचता है कि कोई नंबर सम है या नहीं। यदि यह है, तो "X is even" कंसोल पर प्रिंट होना चाहिए, जहां X टेस्ट किया जा रहा नंबर है; अन्यथा, "X is odd" कंसोल पर प्रिंट होना चाहिए।
अब आप Java में लैम्ब्डा एक्सप्रेशन्स के साथ एक विशेषज्ञ की तरह काम करना शुरू करने के लिए तैयार हैं!