web-dev-qa-db-fra.com

Comment convertir un tableau en tuple?

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]) }
25
Pete Montgomery

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)]
34
om-nom-nom

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)}
16
Asim Jalis

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))
9
Jianfeng Tian