Есть 2 способа для этого
1) Объявить функцию, которая принимает параметр типа GenSeq
val a: Vector[Int] = (1 to 10).toVector
val a1: ParVector[Int] = ParVector.range(0, 10)
def sum2(a: GenSeq[Int]) = a.map(_+1)
sum2(a)
sum2(a1)
2) Принять функцию, которая принимает параметр Any, а затем выполнить сопоставление с образцом для него.
val a: Vector[Int] = (1 to 10).toVector
val a1: ParVector[Int] = ParVector.range(0, 10)
def sum1(a: Any) =
{
a match {
case x :Vector[Int] => x.map(_+1)
case y :ParVector[Int] => y.map(_+1)
}
}
sum1(a)
sum1(a1)
В обоих случаях вы получите вывод в формате
sum2: sum2[](val a: scala.collection.GenSeq[Int]) => scala.collection.GenSeq[Int]
res2: scala.collection.GenSeq[Int] = Vector(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
res3: scala.collection.GenSeq[Int] = ParVector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Надеюсь, это прояснит ваш вопрос. Пожалуйста, не стесняйтесь спрашивать, если у вас есть какие-либо сомнения.