В Scala кортежи трудно обрабатывать универсальным образом (это изменится в Scala 3), поэтому самым простым решением для вас будет просто создать вспомогательный объект с перегруженной функцией:
object TupleUtil {
def splitHead[K,V](t: (K,V,V)): (K,(V,V)) = t._1 -> (t._2, t._3)
def splitHead[K,V](t: (K,V,V,V)): (K,(V,V,V)) = t._1 -> (t._2, t._3, t._4)
def splitHead[K,V](t: (K,V,V,V,V)): (K,(V,V,V,V)) = t._1 -> (t._2, t._3, t._4, t._5)
//etc up to 22
}
Или, если вы можете использовать бесформенный, то вы можете просто сделать:
import shapeless.syntax.std.tuple._
(t.head, t.tail)
Чтобы использовать его, просто добавьте его к вашему build.sbt
:
libraryDependencies += "com.chuusai" %% "shapeless" % "2.3.3"