2009-12-17 23 views

risposta

63

funziona con qualsiasi tupla (scala 2,8):

myTuple.productIterator.toList 

Scala 2.7:

(0 to (myTuple.productArity-1)).map(myTuple.productElement(_)).toList 

Non sai come mantenere tipo di informazioni per un prodotto generico o di Tuple, ma per Tuple2 :

def tuple2ToList[T](t: (T,T)): List[T] = List(t._1, t._2) 

Si potrebbe, naturalmente, de conversioni simili di tipo sicuro per tutte le tuple (fino a 22).

+1

Sembra buono, anche se è necessario 'myTuple.productArity - 1' e' productElement() 'restituisce un' Qualsiasi'. C'è un modo per mantenere le informazioni di tipo interno. – pr1001

+0

Indicizzazione corretta off-by-one e tipo aggiunto mantenendo il commento nella risposta. –

+0

Grazie, sembra buono. – pr1001

4

Utilizzando informe -

@ import syntax.std.tuple._ 
import syntax.std.tuple._ 
@ (1,2,3).toList 
res21: List[Int] = List(1, 2, 3) 
@ (1,2,3,4,3,3,3,3,3,3,3).toList 
res22: List[Int] = List(1, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3) 

Si noti che le informazioni di tipo non si perde utilizzando informe di toList.

Problemi correlati