स्कैला में एक समारोह शाब्दिक क्या है और मुझे उनका उपयोग कब करना चाहिए?स्कैला में एक समारोह शाब्दिक क्या है?
उत्तर
फ़ंक्शन शाब्दिक फ़ंक्शन को परिभाषित करने के लिए एक वैकल्पिक वाक्यविन्यास है। यह तब उपयोगी होता है जब आप किसी विधि को किसी विधि के लिए तर्क के रूप में पास करना चाहते हैं (विशेष रूप से एक उच्च-आदेश एक फोल्ड या फ़िल्टर ऑपरेशन की तरह) लेकिन आप एक अलग फ़ंक्शन को परिभाषित नहीं करना चाहते हैं। फ़ंक्शन अक्षर अज्ञात हैं - उनके पास डिफ़ॉल्ट रूप से कोई नाम नहीं है, लेकिन आप उन्हें एक चर के लिए बाध्य करके एक नाम दे सकते हैं। एक समारोह शाब्दिक इसलिए की तरह परिभाषित किया गया है:
(a:Int, b:Int) => a + b
आप उन्हें चर करने के लिए बाध्य कर सकते हैं:
val add = (a:Int, b:Int) => a + b
add(1, 2) // Result is 3
जैसे कि मैंने पहले कहा, समारोह शाब्दिक उच्च क्रम कार्यों के लिए तर्क के रूप में पारित करने के लिए उपयोगी होते हैं। वे अन्य कार्यों के भीतर घिरे एक-लाइनर या सहायक कार्यों को परिभाषित करने के लिए भी उपयोगी हैं।
A Tour of Scala फ़ंक्शन अक्षरों के लिए एक बहुत अच्छा संदर्भ देता है (वे उन्हें अनाम कार्य कहते हैं)।
स्कैला में अन्य प्रकार के अक्षरों के लिए फ़ंक्शन अक्षरों की तुलना करना उपयोगी हो सकता है। Literalsके लिए संख्यात्मक चीनी हैं मूल्यों का प्रतिनिधित्व करने वाले कुछ प्रकारों की भाषा विशेष रूप से महत्वपूर्ण मानी जाती है। Scala has पूर्णांक अक्षर, चरित्र अक्षर, स्ट्रिंग अक्षर, इत्यादि। स्कैला फ़ंक्शन अक्षरों द्वारा स्रोत कोड में प्रतिनिधित्व करने वाले प्रथम श्रेणी मानों के रूप में कार्य करता है। ये फ़ंक्शन मान एक विशेष function type में रहते हैं। उदाहरण के लिए,
5
शाब्दिक एक पूर्णांकInt
प्रकार'a'
में एक मूल्य का प्रतिनिधित्व कर रहा है एक चरित्र शाब्दिक एक समारोह शाब्दिक मेंInt => Int
समारोह प्रकार एक मूल्य का प्रतिनिधित्व कर रहा है
(x: Int) => x + 2
में एक मूल्य का प्रतिनिधित्व करता है
Char
प्रकार
साहित्य अक्सर अज्ञात मानों के रूप में उपयोग किया जाता है, यानी, उन्हें नामित चर के लिए पहले बाध्य किए बिना। इससे प्रोग्राम को अधिक संक्षिप्त बनाने में मदद मिलती है और यह उचित होता है जब शाब्दिक का पुन: उपयोग करने योग्य नहीं होता है। - जो शाब्दिक बनाम के लिए एक आम तौर पर अच्छा मामले देना होगा
List(1,2,3).filter((x: Int) => x > 2)
बनाम
val one: Int = 1
val two: Int = 2
val three: Int = 3
val greaterThan2: (Int => Int) = (x: Int) => x > two
List(one,two,three).filter(greaterThan2)
क्या प्रकारों को और स्पष्ट करने का कोई तरीका है? यह काम करता है: 'सूची (1,2,3) .map (x => x + 10) ' यह काम नहीं करता है:' सूची (1,2,3) .map ((x: Int): Str = > एक्स।toString) ' यह काम करता है लेकिन यह इतना स्पष्ट नहीं है: 'सूची (1,2,3)। मैप ((x: int) => x.toString)' या यदि मैं ऐसा करना चाहता हूं तो मुझे नाम का उपयोग करना चाहिए समारोह? – monteiro
@ मॉन्टेरोरो 'सूची (1,2,3)। मैप ((एक्स: इंट) => {x.toString}: स्ट्रिंग) ' –
बहुत सराहना की! :) – monteiro
- 1. लाइफटाइम शाब्दिक एक समारोह से वापस लौटे
- 2. स्कैला XML.loadString बनाम शाब्दिक अभिव्यक्ति
- 3. सी ++ में "शाब्दिक" क्या है?
- 4. क्या स्कैला में एक लैम्ब्डा कार्य है?
- 5. स्कैला आंशिक समारोह Monoid हो सकता है?
- 6. जावा में कक्षा शाब्दिक क्या है?
- 7. क्या आयरनपीथन में दशमलव के लिए एक शाब्दिक संकेत है?
- 8. पैरामीटर क्या है: _ * स्कैला में मतलब है?
- 9. इंटीजर शाब्दिक पायथन में एक वस्तु है?
- 10. एक स्ट्रिंग एक समारोह के लिए शाब्दिक है कि एक std :: स्ट्रिंग और
- 11. _ :: स्कैला में क्या मतलब है?
- 12. एक गैरस्टिक सदस्य समारोह क्या है?
- 13. स्कैला में, क्या सामान्य प्रकार की धैर्य को कम करने के लिए एक शॉर्टेंड है?
- 14. एक चल बिन्दु शाब्दिक
- 15. एक स्ट्रिंग शाब्दिक
- 16. क्या समारोह() {}() और समारोह() {}()
- 17. क्या NavigableMap का एक स्कैला संस्करण है?
- 18. एक समारोह है कि
- 19. जावास्क्रिप्ट - एक स्ट्रिंग शाब्दिक
- 20. एक स्ट्रिंग शाब्दिक
- 21. क्या उत्परिवर्तनीय संग्रह के लिए एक शाब्दिक वाक्यविन्यास है?
- 22. क्या समारोह और समारोह
- 23. स्कैला
- 24. सी ++ स्ट्रिंग शाब्दिक के डेटाटाइप क्या है?
- 25. जावा में स्कैला आंशिक समारोह को कार्यान्वित करने का सबसे आसान तरीका क्या है?
- 26. "शाब्दिक" शब्द का क्या अर्थ है?
- 27. शाब्दिक
- 28. बुला समारोह एक समारोह
- 29. मुख्य समारोह में क्या जाता है?
- 30. क्या यह स्कैला में एक उच्च प्रकार का प्रकार है?
मैं इसे बाहर बात करने के लिए कैसे एक समारोह शाब्दिक बस FunctionN पर चीनी है उपयोगी हो सकता है लगता है: उदाहरण के लिए "लंबा" संस्करण। साथ ही, जब मेरे पास +1 है, तो आमतौर पर यह नहीं होता है कि "फ़ंक्शन को परिभाषित करने के लिए वैकल्पिक वाक्यविन्यास [क्या आपका मतलब विधि ????]" है क्योंकि *** फ़ंक्शन विधियां नहीं हैं *** - विधियां ही बनाई गई हैं * केवल * उन वर्गों और संदेशों पर लागू होते हैं जिन्हें उन्हें भेजा जा सकता है (कक्षाएं)। * फ़ंक्शन * "प्रथम श्रेणी मान" (ऑब्जेक्ट्स जो 'लागू करें' और कुछ अन्य का समर्थन करते हैं) हैं। –
डीफ़ एड = (ए: इंट, बी: इंट) => ए + बी एक जैसा नहीं है? मैं किसी अन्य फ़ंक्शन को पास करने के लिए इस 'एड' का उपयोग भी कर सकता हूं – ses
आप अंडरस्कोप ऑपरेटर के साथ मौजूदा फ़ंक्शन से फ़ंक्शन शाब्दिक भी बना सकते हैं: def addTwoNumbers (ए: इंट, बी: इंट) = ए + बी; def add2 = addTwoNumbers _ – Blitzkr1eg