लम्बोदर भाव
लैम्ब्डा एक्सप्रेशन या केवल लैम्ब्डा एक अनाम फ़ंक्शन है; नाम के बिना एक समारोह। इन कार्यों को बिना घोषणा के तुरंत एक अभिव्यक्ति के रूप में पारित किया जाता है। उदाहरण के लिए,
fun main(args: Array) ( val greeting = ( println("Hello!")) // invoking function greeting() )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
अस्सलाम ओ अलैकुम!
यहाँ, लैम्बडा एक्सप्रेशन को वेरिएबल ग्रीटिंग के लिए दिया गया है। अभिव्यक्ति किसी भी पैरामीटर को स्वीकार नहीं करती है और इस कार्यक्रम में किसी भी मूल्य को वापस नहीं करती है।
फिर, फ़ंक्शन (लैम्ब्डा एक्सप्रेशन) को निम्नानुसार लागू किया जाता है:
शुभकामना()
उदाहरण: लैम्बडा विद पैरामीटर्स एंड रिटर्न टाइप
नीचे दिए गए कार्यक्रम में एक लैम्ब्डा अभिव्यक्ति है जो दो पूर्णांकों को मापदंडों के रूप में स्वीकार करता है, और उन दो पूर्णांकों के उत्पाद को लौटाता है।
fun main(args: Array) ( val product = ( a: Int, b: Int -> a * b ) val result = product(9, 3) println(result) )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
२।
यहाँ, लंबोदर अभिव्यक्ति है:
ध्यान दें, एक लंबोदर अभिव्यक्ति घुंघराले ब्रेसिज़ के अंदर संलग्न है।
उच्च-क्रम समारोह
कार्यात्मक प्रोग्रामिंग के लिए कोल्टिन का एक बड़ा समर्थन है। आप अन्य कार्यों के लिए कार्यों को तर्क के रूप में पारित कर सकते हैं। इसके अलावा, आप अन्य फ़ंक्शन से एक फ़ंक्शन वापस कर सकते हैं। इन कार्यों को उच्च-क्रम फ़ंक्शन कहा जाता है।
अक्सर, लैम्ब्डा अभिव्यक्ति सुविधा के लिए उच्च-क्रम फ़ंक्शन (एक विशिष्ट फ़ंक्शन के बजाय) में पारित की जाती है।
उदाहरण: फंक्शन में लाम्बा पासिंग
चलो एक उच्च-क्रम फ़ंक्शन के लिए एक लैम्ब्डा अभिव्यक्ति पास करते हैं। यहाँ आप इसे कैसे कर सकते हैं।
fun callMe(greeting: () -> Unit) ( greeting() ) fun main(args: Array) ( callMe(( println("Hello!") )) )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
अस्सलाम ओ अलैकुम!
यहाँ, callMe()
एक उच्च-क्रम फ़ंक्शन है (क्योंकि यह एक पैरामीटर के रूप में कार्य करता है)। ग्रीटिंग पैरामीटर callMe()
फ़ंक्शन में दिए गए लैम्ब्डा को निम्न के रूप में स्वीकार करता है :
अभिवादन: () -> इकाई
खाली कोष्ठक का सुझाव है कि, पारित गुमनाम फ़ंक्शन किसी भी पैरामीटर को स्वीकार नहीं करता है। और, Unit
कीवर्ड सुझाव देता है कि अनाम फ़ंक्शन कोई मान नहीं लौटाता है।
संग्रह के साथ काम करते समय लैम्ब्डा का अक्सर उपयोग किया जाता है। और, मानक-पुस्तकालय में कई अंतर्निहित कार्य उपलब्ध हैं जो हमारे काम के तरीके को आसान बनाने के लिए लैम्ब्डा लेते हैं। आपको यहां कुछ उदाहरण दिखाई देंगे:
उदाहरण: maxBy () फ़ंक्शन
MaxBy () फ़ंक्शन दिए गए फ़ंक्शन का सबसे बड़ा मान देने वाला पहला तत्व देता है या null
यदि कोई तत्व नहीं हैं।
data class Person(val name: String, val age: Int) fun main(args: Array) ( val people = listOf( Person("Jack", 34), Person("Shelly", 19), Person("Patrick", 13), Person("Jill", 12), Person("Shane", 22), Person("Joe", 18) ) val selectedPerson = people.maxBy(( person -> person.age )) println(selectedPerson) println("name: $(selectedPerson?.name)" ) println("age: $(selectedPerson?.age)" ) )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
व्यक्ति (नाम = जैक, आयु = 34) नाम: जैक आयु: 34
यहां, maxBy()
फ़ंक्शन व्यक्तिगत वस्तुओं की एक सूची लेता है और अधिकतम आयु वाले व्यक्ति ऑब्जेक्ट को वापस करता है।
यह कीवर्ड: सिंगल पैरामीटर के लिए उपयोग किया जाता है
उपरोक्त कार्यक्रम में, लंबोदर अभिव्यक्ति केवल एक पैरामीटर (व्यक्तिगत वस्तुओं की एक सूची) को स्वीकार करती है। ऐसे मामलों में, आप कीवर्ड का उपयोग करके तर्क को संदर्भित कर सकते हैं it
।
आप प्रतिस्थापित कर सकते हैं
वैल सेलेरपर्सन = लोग.मैक्सबैक्सी ((व्यक्ति -> person.age))
साथ से
वैल सिलेक्टर्सपर्सन = पीपुल.मैक्सबाय ((यह))
उपरोक्त कार्यक्रम में।
उदाहरण: maxBy () और प्रारंभ () फ़ंक्शन
नीचे दिया गया कार्यक्रम अक्षर एस के साथ शुरू होने वाले व्यक्ति की अधिकतम आयु की गणना करता है।
हम दो पुस्तकालय कार्यों का उपयोग करेंगे maxBy()
और startsWith()
इस कार्य को पूरा करने के लिए। तारांकित () फ़ंक्शन रिटर्न देता है true
यदि यह शुरू होता है एक तर्क के रूप में निर्दिष्ट वर्ण के साथ।
data class Person(val name: String, val age: Int) fun main(args: Array) ( val people = listOf( Person("Jack", 34), Person("Shelly", 19), Person("Patrick", 13), Person("Jill", 12), Person("Shane", 22), Person("Joe", 18) ) val selectedPerson = people .filter ( it.name.startsWith("S") ) .maxBy( it.age ) println(selectedPerson) println("name: $(selectedPerson?.name)" ) println("age: $(selectedPerson?.age)" ) )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
व्यक्ति (नाम = शेन, उम्र = 22) नाम: शेन उम्र: 22
अनुशंसित रीडिंग
- कोटलिन क्लोजर
- कोटलिन के साथ और लागू होते हैं