我在另一个答案中看到了Function.tupled的用法示例: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)
如果我不想使用占位符语法,似乎我可以不用它。
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)
直接使用占位符语法是不起作用的:
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)
中似乎有很多事情发生。另外,我该如何使用它以避免出现弃用警告?