2014-11-27 2 views

ответ

6

Явное конвертировать каждый внутренний Vector в Tuple3:

vector.map { 
    case Vector(f, s, t) => Tuple3(f, s, t) 
}.toList 

Если имеется векторов вариационного размера, вы можете использовать более общий подход:

def toTuple(seq: Seq[_]): Product = { 
    val clz = Class.forName("scala.Tuple" + seq.size) 
    clz.getConstructors()(0).newInstance(seq.map(_.asInstanceOf[AnyRef]): _*).asInstanceOf[Product] 
} 

vector.map(toTuple).toList 

Но есть ограничение: максимальная длина векторов 22.

+0

Можно явно отобразить его как драйвер базы данных возвращает вектор векторов VARIADIC размера т.е. зависит от типа запроса, выполняемого ... если его выберите a, b из таблицы, его вектор размером 2, представляющий 2 выбранных столбца и т. д. ... Есть ли способ сопоставления без учета размера – user2780187

+0

Как вы ожидаете сделать 'Tuple3', если вектор длины не 3? –

+0

Вопрос @ChrisMartin был о 'Tuple3'. Я согласен с вами в том, что векторы вариационного размера нуждаются в более общем решении. –

Смежные вопросы