2013-09-27 1 views
1

내가 Play! 문서는 내가 목록 [(문자열, 문자열)이 같이스칼라 곰 스트림 API로 튜플 목록 가져 오기

에 결과를 구문 분석하는 방법을 찾을 :

// Create an SQL query 
val selectCountries = SQL("Select * from Country") 

// Transform the resulting Stream[Row] as a List[(String,String)] 
val countries = selectCountries().map(row => 
row[String]("code") -> row[String]("name") 
).toList 

나는이 작업을 수행 할 수 있지만, 내 튜플 더 많은 데이터가 포함됩니다.

이 같은 일을 해요 :

val getObjects = SQL("SELECT a, b, c, d, e, f, g FROM table") 
    val objects = getObjects().map(row => 
    row[Long]("a") -> row[Long]("b") -> row[Long]("c") -> row[String]("d") -> row[Long]("e") -> row[Long]("f") -> row[String]("g")).toList 
나는이 형식이됩니다 얻을 각 튜플은, 당연히, 나는 위의 코드에서 요구하고있는 무슨 이잖아

:

((((((Long, Long), Long), String), Long), Long), String) 

그러나 나는 이것을 원한다 :

(Long, Long, Long, String, Long, Long, String) 

무엇을 묻는 것은 위의 마지막 것과 같은 튜플을 생성하기 위해 어떻게 결과를 파싱해야 하는가이다. List [(String, String)]에 대한 문서 에서처럼하지만 더 많은 데이터를 갖고 싶습니다.

감사

답변

2

당신 때문에 ->((((((Long, Long), Long), String), Long), Long), String)을 받고,이 호출 할 때마다 한 쌍으로 두 가지 요소를 래핑합니다.

val objects = getObjects().map(row => 
    (row[Long]("a"), row[Long]("b"), ..., row[String]("g")).toList 

을하지만 현재 튜플이 더있을 수 있음을 기억 : 그래서 각 ->에 당신은 당신이 당신은 쉼표로 화살표를 변경하고 ()로 포장해야하는 등,이 튜플을 가져다가 새로운 하나를 만들어, 튜플있어 그 안에 22 개 이상의 요소가 있습니다.

+0

나는'->'이 그런 것을 만드는 것을 알고 있고''대신''을 시도했다. 하지만 이제는'('과')'을 추가했다는 것을 알았고 나는 그것을하지 않았다. 바로 그걸 시도 할거야! – raxelsson

+0

감사합니다 @Alexlv, 나는'('과')'를 놓쳤습니다. 그런 작은 일을 놓치기는 어리석은 느낌. – raxelsson