2012-09-25 10 views
17

Java JPA içeren bir Array[Any] ürünüm var (bu örnekte iki tane var, ancak az sayıda). Bunları tuples yerine temsil etmek istiyorum.Diziyi bir Tuple'a dönüştürme nasıl yapılır?

Bazı hızlı ve kirli dönüşüm kodum var ve bunun nasıl geliştirilebileceğini ve belki de daha genel hale getirildiğini merak ettim.

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]) } 

cevap

25

Bu nasıl?

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

Çözümümün aşağıdaki gibidir:

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

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

kullanın map { case Array(f1,f2) => (f1,f2) }.

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

bir örnektir