如何压扁嵌套元组?

zjf*_*fdu 20 scala tuples flatten

我有一个嵌套的元组结构(String,(String,Double)),我想将其转换为(String,String,Double).我有各种嵌套元组,我不想手动转换每个元组.有没有方便的方法呢?

xie*_*fei 24

如果你用无形的,是你需要什么,我想.

  • 您应该输入一些示例代码。链接仅答案不遵循stackoverflow准则 (3认同)

tgr*_*tgr 8

Tupple没有展平.但是如果你知道结构,你可以这样做:

implicit def flatten1[A, B, C](t: ((A, B), C)): (A, B, C) = (t._1._1, t._1._2, t._2)
implicit def flatten2[A, B, C](t: (A, (B, C))): (A, B, C) = (t._1, t._2._1, t._2._2)
Run Code Online (Sandbox Code Playgroud)

这将使任何类型的Tupple变平.您还可以将隐式关键字添加到定义中.这仅适用于三个元素.您可以将Tupple压扁:

(1, ("hello", 42.0))   => (1, "hello", 42.0)
(("test", 3.7f), "hi") => ("test", 3.7f, "hi")
Run Code Online (Sandbox Code Playgroud)

多个嵌套Tupple不能平铺到地面,因为返回类型中只有三个元素:

((1, (2, 3)),4)        => (1, (2, 3), 4)
Run Code Online (Sandbox Code Playgroud)