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 に答える