Заархивировать несколько последовательностей

Я пытаюсь сжатьнесколько последовательностей, чтобы сформировать длинный кортеж:

val ints = List(1,2,3)
val chars = List('a', 'b', 'c')
val strings = List("Alpha", "Beta", "Gamma")
val bools = List(true, false, false)

ints zip chars zip strings zip bools

Что я получаю:

List[(((Int, Char), String), Boolean)] =
  List((((1,a),Alpha),true), (((2,b),Beta),false), (((3,c),Gamma),false))

Однако я хотел бы чтобы получить последовательность из плоскихкортежей:

List[(Int, Char, String, Boolean)] = 
  List((1,a,Alpha,true), (2,b,Beta,false), (3,c,Gamma,false))

Теперь я могу сделать:

List(ints, chars, strings, bools).transpose

Но он возвращает слабо типизированный List[List[Any]]. Также я могу сделать (ints, chars, strings).zipped, но zippedработает только с 2-кортежами и 3-кортежами.

Есть ли способ легко заархивировать (произвольное) количество последовательностей одинаковой длины?

34
задан Tomasz Nurkiewicz 9 March 2012 в 10:06
поделиться