एक समस्या जिसे मैं लगातार स्कैला में चलाता हूं वह लैम्ब्डा के अभिव्यक्तियों के साथ होता है। उदाहरण के लिए"विस्तारित फ़ंक्शन के लिए गुम पैरामीटर प्रकार"?
JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }
मेरे जैसे एक त्रुटि देता है:
missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))
फिर भी अगर मैं विस्तार खुद ही करता हूं:
JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }
यह ठीक काम करता है।
क्या यह एक स्कैला बग है? या क्या मैं कुछ गलत कर रहा हूँ?
'_' विचार करने के लिए इसका मतलब यह नहीं है कि तुम क्या लगता है कि यह वहाँ का मतलब है चाहते हो सकता है को देखते हुए। यह उस संदर्भ में एक * विशेष * प्रतीक है: * किसी भी अन्य साधारण पहचानकर्ता को ठीक काम करना चाहिए *। इस जादू के कारण, 'कुछ (4) .foreach (_ +: सूची())' "ठीक काम करता है"। देखने के लिए, 'कुछ (4) .map (_ + 1) 'और' कुछ (4) .map (x => x + 1)' की तुलना करें। उम्मीद है कि यह एक डुप्लिकेट है (और इस तरह बंद है) या एसएलएस से खींचने वाला एक अच्छा जवाब होगा :) –
http://stackoverflow.com/questions/7695270/underscore-in-list-filter (good), http : //stackoverflow.com/questions/4422016/scala-underscore-minimal- कार्यक्षमता, http://stackoverflow.com/questions/6593277/concise-notation-for-single-arg-anonymous-function-avoiding-underscore-not -wor –
(असल में, मुझे आश्चर्य है कि * कोई * संदर्भ है जहां '_' * * * * एक * अलग तरीके से जादुई नहीं है ...) –