Combine two lists with two generators.

nested-for Two generators in one `for` pair every element of the first with every element of the second, yielding one result per combination.

Nested For

base
NestedFor.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val base = 10
    val sums = for (a <- List(1, 2); b <- List(3, 4)) yield base + a + b
    val text = sums.mkString(",")

    println("count=" + sums.length)
    println("text=" + text)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val base = 20
    val sums = for (a <- List(1, 2); b <- List(3, 4)) yield base + a + b
    val text = sums.mkString(",")

    println("count=" + sums.length)
    println("text=" + text)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val base = 100
    val sums = for (a <- List(1, 2); b <- List(3, 4)) yield base + a + b
    val text = sums.mkString(",")

    println("count=" + sums.length)
    println("text=" + text)
  }
}
  1. base ← 10, sums ← List(14, 15, 15, 16), text ← 14,15,15,16

    1object Main {2  def main(args: Array[String]): Unit = {3    val base→ 10 = 10 //@base=20, 1004    val sums→ List(14, 15, 15, 16) = for (a <- List(1, 2); b <- List(3, 4)) yield base10 + a + b5    val text→ 14,15,15,16 = sumsList(14, 15, 15, 16).mkString(",")67    println("count=" + sums.length4)8    println("text=" + text14,15,15,16)9  }10}
    outputcount=4
    text=14,15,15,16
  1. base ← 20, sums ← List(24, 25, 25, 26), text ← 24,25,25,26

    1object Main {2  def main(args: Array[String]): Unit = {3    val base→ 20 = 204    val sums→ List(24, 25, 25, 26) = for (a <- List(1, 2); b <- List(3, 4)) yield base20 + a + b5    val text→ 24,25,25,26 = sumsList(24, 25, 25, 26).mkString(",")67    println("count=" + sums.length4)8    println("text=" + text24,25,25,26)9  }10}
    outputcount=4
    text=24,25,25,26
  1. base ← 100, sums ← List(104, 105, 105, 106), text ← 104,105,105,106

    1object Main {2  def main(args: Array[String]): Unit = {3    val base→ 100 = 1004    val sums→ List(104, 105, 105, 106) = for (a <- List(1, 2); b <- List(3, 4)) yield base100 + a + b5    val text→ 104,105,105,106 = sumsList(104, 105, 105, 106).mkString(",")67    println("count=" + sums.length4)8    println("text=" + text104,105,105,106)9  }10}
    outputcount=4
    text=104,105,105,106