2015-03-01 5 views
6

मैं एक शब्द में प्रत्येक चरित्र की घटना सूची गणना करने के लिए कोशिश कर रहा हूँ, मेरे वर्तमान कोड इस तरह दिखता है:स्कैला में, समूह में `_` का उपयोग क्यों नहीं किया जा सकता है?

"hello" 
    .groupBy((x:Char)=>x) 
    .map(a=>(a._1, a._2.length)) 

मैं .groupBy((x:Char)=>x) अनाड़ी लग रहा है लगता है और इसलिए इस तरह के पुनर्लेखन:

"hello" 
    .groupBy(_) 
    .map(a=>(a._1, a._2.length)) 

लेकिन फिर संकलक एक त्रुटि

Error:(1, 18) missing parameter type for expanded function ((x$1) => "hello".groupBy(x$1).map(((a) => scala.Tuple2(a._1, a._2.length)))) 
"hello".groupBy(_).map(a=>(a._1, a._2.length)) 

      ^

क्या किसी के पास इसके बारे में कोई विचार है? या क्या यह लिखने का बेहतर तरीका है?

उत्तर

11

x.groupBy(_), किसी भी विधि x.foo(_) की तरह, इसका अर्थ है "इस विधि को फ़ंक्शन में चालू करें", यानी y => x.groupBy(y)

क्योंकि _ कई चीजों के लिए उपयोग किया जाता है, भी का अर्थ "यहां मूल्य में प्लग करें" हो सकता है। हालांकि, उपरोक्त अर्थ के कारण "पहचान में प्लग" काम नहीं करता है।

आप x => x या identity आप _ से क्या चाहते हैं पाने के लिए कर सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे