Я видел это использование примера Function.tupled в другом answer: Map(1 -> "one", 2 -> "two") map Function.tupled(_ -> _.length)
.
Работает:
scala> Map(1 -> "one", 2 -> "two") map Function.tupled(_ -> _.length)
<console>:5: warning: method tupled in object Function is deprecated:
Use `f.tuple` instead
Map(1 -> "one", 2 -> "two") map Function.tupled(_ -> _.length)
^
res0: scala.collection.immutable.Map[Int,Int] = Map(1 -> 3, 2 -> 3)
Кажется, я могу обойтись без, если я не хочу использовать синтаксис placeholder.
scala> Map(1 -> "one", 2 -> "two") map (x => x._1 -> x._2.length)
res1: scala.collection.immutable.Map[Int,Int] = Map(1 -> 3, 2 -> 3)
Прямое использование синтаксиса placeholder не работает:
scala> Map(1 -> "one", 2 -> "two") map (_._1 -> _._2.length)
<console>:5: error: wrong number of parameters; expected = 1
Map(1 -> "one", 2 -> "two") map (_._1 -> _._2.length)
Как работает функция Function.tupled? Кажется, что в Function.tupled(_ -> _.length)
происходит много чего. Также как бы я использовал его, чтобы не получить предупреждение об отказе?