将函数 A => (B, C) 转换为 A => (C, B) 的惯用方式

3

有没有一种惯用的方式来转换一个函数?

val x: A => (B, C) = ...

to

val y: A => (C, B) = ...
1个回答

15
  • 使用Tuple2.swap可以将(B, C)更改为(C, B)
  • A => (B, C)转换为A => (C, B)可以使用.andThen(_.swap)实现。

例如:

scala> val a = (i: Int) => (s"$i", i.toDouble)
a: Int => (String, Double) = <function1>

scala> val b = a.andThen(_.swap)
b: Int => (Double, String) = <function1>

scala> b(5)
res1: (Double, String) = (5.0,5)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接