3
val xsa = List(1,2,3)
val xsb = List(1,2,3)
for (i <- 0 until xsa.size) {
    val a = xsa(i)
    val b = xsb(i)
    println(a + "_" + b)
}

I want to simplify the length equals' List or Array. I hoped to do it like this:

for (a <- xsa; b <- xsb)
    println(a + "_" + b)

But why does it only iterate xsb once?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Googol Shan
  • 1,255
  • 9
  • 13

3 Answers3

19
for ((a,b) <- xsa zip xsb)
  println(a + "_" + b)
Debilski
  • 66,976
  • 12
  • 110
  • 133
8
(xsa, xsb).zipped foreach ((a, b) => println (a + "_" + b))

Or

(xsa, xsb).zipped map (_ + "_" + _) foreach println
Landei
  • 54,104
  • 13
  • 100
  • 195
1

Try Seq.zip

val x = xsa.zip(xsb)
for ((a, b) <- x)
    println(a + "_" + b)
sblundy
  • 60,628
  • 22
  • 121
  • 123