2012-09-25 36 views
17

Ho un Array[Any] da Java JPA contenente (due in questo caso, ma consideriamo un numero limitato di) cose con caratteri diversi. Mi piacerebbe invece rappresentarli come tuple.Come convertire una matrice in una tupla?

Ho un codice di conversione veloce e sporco, e mi chiedevo come potesse essere migliorato e forse reso più generico.

val pair = query.getSingleOrNone // returns Option[Any] (actually a Java array) 
pair collect { case array: Array[Any] => 
    (array(0).asInstanceOf[MyClass1], array(1).asInstanceOf[MyClass2]) } 

risposta

25

Che ne dici di questo?

val pair = query.getSingleOrNone 
pair collect { case Array(x: MyClass1, y: MyClass2, _*) => (x,y) } 
// result would be Option[(MyClass1, MyClass2)] 
7

La mia soluzione è la seguente:

val loginValues = line.split(",") // return an Array 

val (ip, date, action, username) = (loginValues(0), loginValues(1).toLong, loginValues(2), loginValues(3)) 
8

Usa map { case Array(f1,f2) => (f1,f2) }.

Ecco un esempio:

Array("CA:California", "WA:Washington", "OR:Oregon"). 
    map(s => s.split(":")). 
    map { case Array(f1,f2) => (f1,f2)} 
Problemi correlati