2012-09-25 4 views
17

Java JPA에서 제공하는 Array[Any]을 가지고 있습니다 (이 경우 2 개이지만 소수의 것으로 간주합니다). 대신 튜플로 표현하고 싶습니다.배열을 튜플로 변환하는 방법은 무엇입니까?

나는 빠르고 깨끗한 변환 코드를 가지고 있으며 어떻게 개선되고 더 일반적인지를 궁금해했습니다.

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

어때?

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

내 솔루션은 다음과 같습니다 :

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

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

사용 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)} 
: 여기

은 일례이며
관련 문제