17

此行会导致编译错误:

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。

4

2 回答 2

22

即使无法准确重现问题,我知道您可以通过指定类型来解决歧义:

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,这是不必要的,在您的用例中可能需要。

于 2012-10-15T02:32:33.047 回答
16

根据RosettaCode的说法,调用内置ConsoleAPI 比调用 Java 运行时库更好System.err

scala> List("aa", "bb", "cc").foreach(Console.err.println(_))
aa
bb
cc
于 2014-08-04T11:15:45.913 回答