स्केल अंडरस्कोर - ERROR: विस्तारित फ़ंक्शन के लिए लापता पैरामीटर प्रकार


88

मुझे पता है कि इस पर काफी कुछ सवाल हैं, लेकिन मैंने एक सरल उदाहरण बनाया है जो मुझे लगा कि मुझे काम करना चाहिए, लेकिन फिर भी नहीं करता है और मुझे यकीन नहीं है कि मैं समझता हूं कि क्यों

val myStrings = new Array[String](3)
// do some string initialization

// this works
myStrings.foreach(println(_))


// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))

क्या कोई समझा सकता है कि दूसरा कथन संकलित क्यों नहीं है?


4
और भी सरल:myStrings.foreach (println)
उपयोगकर्ता अज्ञात

जवाबों:


120

इसका विस्तार होता है:

myStrings.foreach(println(x => x.toString))

तुम्हें चाहिए:

myStrings.foreach(x => println(x.toString))

अनाम फ़ंक्शंस के लिए प्लेसहोल्डर सिंटैक्स एक फ़ंक्शन के साथ छोटी से छोटी संभव अभिव्यक्ति को प्रतिस्थापित करता है।



तर्क के लिए myStrings.foreach(println(_))स्वतः क्यों शामिल toStringहै println?
केविन मेरेडिथ

1
@ केवी मेरेडिथ प्रिंट्लन ने जो भी वस्तु पास की है, उसे
theString

1
गुमनाम कार्यों के लिए प्लेसहोल्डर वाक्य रचना एक समारोह के साथ छोटी संभव युक्त अभिव्यक्ति बदल देता है। इस प्रश्न में व्यक्त की गई शंकाओं से मुझे मदद मिली: stackoverflow.com/questions/37589210/…
GA1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.