Есть ли в Scala методы для преобразования списков в списки? - PullRequest
39 голосов
/ 17 декабря 2009

У меня есть Tuple2 из List[List[String]], и я хотел бы иметь возможность преобразовать кортеж в список, чтобы я мог затем использовать List.transpose(). Есть какой-либо способ сделать это? Кроме того, я знаю, что это Pair, хотя я всегда фанат универсальных решений.

Ответы [ 2 ]

75 голосов
/ 17 декабря 2009

Работает с любым кортежем (scala 2.8):

myTuple.productIterator.toList

Scala 2.7:

(0 to (myTuple.productArity-1)).map(myTuple.productElement(_)).toList

Не уверен, как сохранить информацию о типе для общего продукта или кортежа, но для Tuple2:

def tuple2ToList[T](t: (T,T)): List[T] = List(t._1, t._2)

Конечно, вы можете определить аналогичные безопасные для типов преобразования для всех кортежей (до 22).

8 голосов
/ 01 мая 2017

Использование Shapeless -

@ import syntax.std.tuple._
import syntax.std.tuple._
@ (1,2,3).toList
res21: List[Int] = List(1, 2, 3)
@ (1,2,3,4,3,3,3,3,3,3,3).toList
res22: List[Int] = List(1, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3)

Обратите внимание, что информация о типе не теряется при использовании Shapeless's toList.

...