使用toSet链接映射并使用带下划线的函数文字时键入错误

时间:2016-12-09 23:15:35

标签: scala types set method-chaining function-literal

函数文字与下划线作为参数传递给地图与另一个集合上的 toSet 相关联(例如列表 )导致类型错误:

scala> List(1, 2, 3).toSet map (_.toString)
<console>:12: error: missing parameter type for expanded function ((x$1) => x$1.toString)
   List(1, 2, 3).toSet map (_.toString)

但是,当以相同方式生成的设置分配给某个值时,地图的后续调用将按预期工作:

scala> val set = List(1, 2, 3).toSet
set: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> set map (_.toString)
res1: scala.collection.immutable.Set[String] = Set(1, 2, 3)

回到链接,当构造函数用于从另一个集合(例如 List )生成 Set 时,它按预期工作:

scala> Set(List(1, 2, 3):_*) map (_.toString)
res1: scala.collection.immutable.Set[String] = Set(1, 2, 3)

这是Scala编译器中的错误还是我还缺少其他东西?

0 个答案:

没有答案