Ошибка типа при связывании карты с toSet и использовании функционального литерала с подчеркиванием

Передача литерала функции с подчеркиванием в качестве аргумента для сопоставления, связанного с toSet, в другой коллекции (например, List) приводит к ошибке типа:

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)

Однако, когда Set, созданный таким же образом, присваивается значению, последующий вызов карты работает должным образом:

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)

Возвращаясь к цепочке, когда конструктор используется для создания Set из другой коллекции (например, List), он работает как положено:

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

Это ошибка в компиляторе Scala или я что-то упускаю?

0 ответов

Другие вопросы по тегам