此行导致编译错误:
astgen.typeError.foreach(System.err.println)
typeError是对象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)
我是Scala的新手并且不了解这个问题。使用2.7.7final。
答案 0 :(得分:16)
即使不能完全重现问题,我也知道你可以通过指定类型来解决歧义:
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
是不必要的,在您的用例中可能是必要的。
答案 1 :(得分:13)
根据RosettaCode,调用内置Console
API比使用System.err
调用Java运行时库更好:
scala> List("aa", "bb", "cc").foreach(Console.err.println(_))
aa
bb
cc