A для понимания не похоже на цикл for в том смысле, что термины оцениваются для каждого предыдущего термина. Как пример, посмотрите на результаты ниже. Я не думаю, что это то, что вы ищете:
scala> val elements = List("a", "b", "c", "d")
elements: List[java.lang.String] = List(a, b, c, d)
scala> for (e <- elements; i <- 0 until elements.length) yield (e, i)
res2: List[(java.lang.String, Int)] = List((a,0), (a,1), (a,2), (a,3), (b,0), (b,1), (b,2), (b,3), (c,0), (c,1), (c,2), (c,3), (d,0), (d,1), (d,2), (d,3))
Ответ Тенши, вероятно, больше соответствует желаемому результату, но я надеюсь, что этот контрпример полезен.