Если по какой-то причине вам действительно нужна комбинированная версия, вы можете написать ее самостоятельно.
implicit class SeqOps[A](s: Seq[A]) {
def zipWithIndex2[A1 >: A, B >: Int, That](f: (A, Int) => (A1, B))(implicit bf: CanBuildFrom[Seq[A], (A1, B), That]): That = {
val b = bf(s)
var i = 0
for (x <- s) {
b += f(x, i)
i += 1
}
b.result()
}
}
Назовите это как:
s.zipWithIndex2 {
case (a, b) => (a + "2", b + 2)
}
Я бы действительно подумал об этом дважды, и, скорее всего, воспользуюсь любым другим предложенным подходом.