J'ai un Array[Any]
de Java JPA contenant (deux dans ce cas, mais considérons un petit nombre de) choses de type différent. J'aimerais plutôt les représenter comme des tuples.
J'ai un code de conversion rapide et sale, et je me suis demandé comment il pourrait être amélioré et peut-être rendu plus générique.
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]) }
Que dis-tu de ça?
val pair = query.getSingleOrNone
pair collect { case Array(x: MyClass1, y: MyClass2, _*) => (x,y) }
// result would be Option[(MyClass1, MyClass2)]
Utilisez map { case Array(f1,f2) => (f1,f2) }
.
Voici un exemple:
Array( "CA:California", "WA:Washington", "OR:Oregon").
map(s => s.split(":")).
map { case Array(f1,f2) => (f1,f2)}
Ma solution est comme ci-dessous:
val loginValues = line.split(",") // return an Array
val (ip, date, action, username) = (loginValues(0), loginValues(1).toLong, loginValues(2), loginValues(3))