Build a new list with a for-comprehension.

for-yield A `for` with `yield` runs over each element and collects the results into a new list, the same result as `map`.

For-Yield

factor
ForYield.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val factor = 2
    val doubled = for (n <- List(1, 2, 3)) yield n * factor
    val text = doubled.mkString(",")

    println("count=" + doubled.length)
    println("text=" + text)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val factor = 3
    val doubled = for (n <- List(1, 2, 3)) yield n * factor
    val text = doubled.mkString(",")

    println("count=" + doubled.length)
    println("text=" + text)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val factor = 5
    val doubled = for (n <- List(1, 2, 3)) yield n * factor
    val text = doubled.mkString(",")

    println("count=" + doubled.length)
    println("text=" + text)
  }
}
  1. factor ← 2, doubled ← List(2, 4, 6), text ← 2,4,6

    1object Main {2  def main(args: Array[String]): Unit = {3    val factor→ 2 = 2 //@factor=3, 54    val doubled→ List(2, 4, 6) = for (n <- List(1, 2, 3)) yield n * factor25    val text→ 2,4,6 = doubledList(2, 4, 6).mkString(",")67    println("count=" + doubled.length3)8    println("text=" + text2,4,6)9  }10}
    outputcount=3
    text=2,4,6
  1. factor ← 3, doubled ← List(3, 6, 9), text ← 3,6,9

    1object Main {2  def main(args: Array[String]): Unit = {3    val factor→ 3 = 34    val doubled→ List(3, 6, 9) = for (n <- List(1, 2, 3)) yield n * factor35    val text→ 3,6,9 = doubledList(3, 6, 9).mkString(",")67    println("count=" + doubled.length3)8    println("text=" + text3,6,9)9  }10}
    outputcount=3
    text=3,6,9
  1. factor ← 5, doubled ← List(5, 10, 15), text ← 5,10,15

    1object Main {2  def main(args: Array[String]): Unit = {3    val factor→ 5 = 54    val doubled→ List(5, 10, 15) = for (n <- List(1, 2, 3)) yield n * factor55    val text→ 5,10,15 = doubledList(5, 10, 15).mkString(",")67    println("count=" + doubled.length3)8    println("text=" + text5,10,15)9  }10}
    outputcount=3
    text=5,10,15