Echo - 8 months ago 46

Scala Question

I need to implement a generic method that takes a tuple and returns a Map

Example :

`val tuple=((1,2),(("A","B"),("C",3)),4)`

I have been trying to break this tuple into a list :

`val list=tuple.productIterator.toList`

Scala>list: List[Any] = List((1,2), ((A,B),(C,3)), 4)

But this way returns List[Any] .

I am trying now to find out how to iterate over the following tuple ,for example :

`((1,2),(("A","B"),("C",3)),4)`

in order to loop over each element 1,2,"A",B",...etc.

Answer

What about? :

```
def flatProduct(t: Product): Iterator[Any] = t.productIterator.flatMap {
case p: Product => flatProduct(p)
case x => Iterator(x)
}
val tuple = ((1,2),(("A","B"),("C",3)),4)
flatProduct(tuple).mkString(",") // 1,2,A,B,C,3,4
```

Ok, the `Any`

-problem remains. At least that´s due to the return type of `productIterator`

.

Source (Stackoverflow)