2012-10-15 19 views
12

इस लाइन एक संकलन त्रुटि होती है:स्कैला में मानक त्रुटि के लिए तारों की एक सूची मुद्रित करने के लिए कैसे?

astgen.typeError.foreach(System.err.println) 

लेखन त्रुटि वस्तु astgen में स्ट्रिंग्स के scala.collection.immutable.List है।

त्रुटि मैं हो रही है:

error: ambiguous reference to overloaded definition, 
both method println in class PrintStream of type (java.lang.String)Unit 
and method println in class PrintStream of type (Array[Char])Unit 
match expected type (Nothing) => Unit 
     astgen.typeError.foreach(System.err.println) 

मैं स्काला के लिए नया हूँ और समस्या समझ में नहीं आता। 2.7.7 फ़ाइनल का उपयोग करना। यह हो सकता है आपके उपयोग के मामले में आवश्यक

scala> List("a","b","c") 
res0: List[java.lang.String] = List(a, b, c) 

scala> res0.foreach(System.err.println(_:String)) 
a 
b 
c 

इस उदाहरण में _:String अनावश्यक है,:

+0

मैं संस्करण 2.9.1 में समस्या को पुन: हो सकता है। आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है? क्या आप स्कैला की सूची या जावा के बारे में बात कर रहे हैं? – pedrofurla

+1

आपको उन्नयन पर विचार करना चाहिए, 2.7.7 पूर्व-ऐतिहासिक है। यह मुद्दा हाल के संस्करण में तय किया गया है। – soc

+0

ओपीएस, मेरा मतलब था कि मैं समस्या को 2.9.1 में पुन: पेश नहीं कर सका। और वास्तव में @soc सही है, 2.7.7 पालीओलिथिक है। – pedrofurla

उत्तर

15

यहां तक ​​कि वास्तव में समस्या पुन: पेश करने में सक्षम नहीं होने, मुझे पता है कि तुम प्रकार को निर्दिष्ट करके अस्पष्टता को हल कर सकते हैं।

11
RosettaCode के अनुसार

, बुला निर्मित Console एपीआई System.err साथ जावा रनटाइम पुस्तकालय बुला से बेहतर है:

scala> List("aa", "bb", "cc").foreach(Console.err.println(_)) 
aa 
bb 
cc 
+0

केवल 'System.err' लॉगबैक लक्ष्य के रूप में stderr को लॉग करता है। लक्ष्य के रूप में निर्दिष्ट होने पर 'Console.err' काम नहीं करता है, फिर भी यह stdout पर लॉग ऑन करता है। – kap

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