किसी को भी कृपया मुझे व्याख्या कर सकते हैं कारण है कि मैं कर सकते हैं:प्रयोग
a.mapValues(_.size)
बजाय
a.mapValues(x => x.size)
लेकिन मैं
a.groupBy(_)
बजाय ऐसा नहीं कर सकते
a.groupBy(x => x)
किसी को भी कृपया मुझे व्याख्या कर सकते हैं कारण है कि मैं कर सकते हैं:प्रयोग
a.mapValues(_.size)
बजाय
a.mapValues(x => x.size)
लेकिन मैं
a.groupBy(_)
बजाय ऐसा नहीं कर सकते
a.groupBy(x => x)
यह यहाँ देखने के लिए आसान नहीं है:
a.groupBy(_)
लेकिन यह कुछ इस तरह में यह देखने के लिए आसान है:
a.mkString("<", _, ">")
मैं आंशिक रूप से विधि/समारोह को लागू करने कर रहा हूँ। मैं इसे कुछ मानकों (प्रथम और अंतिम) के लिए आवेदन कर रहा हूँ, और दूसरा पैरामीटर लागू न किए गए छोड़ रहा है, इसलिए मैं इस तरह एक नया कार्य हो रही है:
x => a.mkString("<", x, ">")
पहला उदाहरण है सिर्फ एक विशेष मामले में जहां एकमात्र पैरामीटर आंशिक रूप से लागू होता है। जब आप अभिव्यक्ति पर अंडरस्कोर का उपयोग करते हैं, हालांकि, यह किसी अज्ञात फ़ंक्शन में स्थितित्मक पैरामीटर का खड़ा होता है।
a.mapValues(_.size)
a.mapValues(x => x.size)
भ्रमित होना आसान है, क्योंकि दोनों का परिणाम अज्ञात कार्य होता है।
a.groupBy _
जब आप a.groupBy(_)
लिखने संकलक एक गुमनाम समारोह के रूप में यह समझता है:
x => a.groupBy(x)
को स्काला विनिर्देशों §6.23, एक अभिव्यक्ति में एक अंडरस्कोर प्लेसहोल्डर एक गुमनाम पैरामीटर की जगह अनुसार। तो:
_ + 1
x => x + 1
f(_)
करने के लिए विस्तारित किया गया है x => f(x)
_
करने के लिए विस्तारित किया गया है अपने आप में विस्तार नहीं किया गया है (प्लेसहोल्डर किसी भी अभिव्यक्ति का हिस्सा नहीं है)।अभिव्यक्ति x => a.groupBy(x)
संकलक को भ्रमित कर देगा क्योंकि यह x
के प्रकार का अनुमान नहीं लगा सकता है। यदि a
प्रकार E
तत्वों में से कुछ संग्रह है, तो संकलक उम्मीद x
प्रकार (E) => K
के एक समारोह हो, लेकिन टाइप K
नहीं लगाया जा सकता है ...
हमम ... क्यों? :-) –
@HugoSFerreira उत्तर स्पष्टीकरण के साथ अद्यतन किया गया। – paradigmatic
धन्यवाद। लेकिन, फिर 'a.mapValues (_। आकार) 'क्यों नहीं है' x => a.mapValues (x.size)'? –
आप 'मामलों में identity' उपयोग कर सकते हैं जहां समारोह की जरूरत है' एक्स: वास्तव में, वहाँ एक तिहाई अंडरस्कोर, जैसे कि एक विधि मूल्य में एक विधि (जो भी एक गुमनाम समारोह है) कन्वर्ट करने के लिए प्रयोग किया जाता है है => x': 'एक समूह द्वारा पहचान ' – incrop
@incrop टिप के लिए धन्यवाद, मैंने कभी नहीं देखा कि पहचान फ़ंक्शन पहले से ही' प्रीडिफ 'में था ... – paradigmatic