This question already has answers here:
Type inference fails on Set made with .toSet?

(3 个回答)


6年前关闭。




我注意到 Scala 编译器的一个奇怪行为。编码:
Seq("?").toSet foreach (println(_))

产生以下错误:
error: missing parameter type for expanded function ((x$1) => println(x$1))
        Seq("?").toSet foreach (println(_))
                                        ^

与此相同:
Seq("?").toSet foreach (x => println(x))

我找到了两种方法来解决这个问题。 Ether 明确指定类型:
Seq("?").toSet[String] foreach (println(_))

或者保存到变量:
val s = Seq("?").toSet
s foreach (println(_))

这是合理的行为还是编译器错误?这对我来说没有多大意义。这怎么解释?

最佳答案

它扩展为:

Seq("?").toSet foreach (println(x=>x))

10-08 18:18