For-Comprehensions
Accumulating Labels
Build labeled text for each element.
accumulate-labels
A for-comprehension can build a label for each element. Joining the results gives a single readable summary string.
Accumulating Labels
AccumulateLabels.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val tag = "id"
val items = List(10, 20, 30)
val labels = for (n <- items) yield tag + "=" + n
val text = labels.mkString(", ")
println("count=" + labels.length)
println("text=" + text)
}
}
object Main {
def main(args: Array[String]): Unit = {
val tag = "row"
val items = List(10, 20, 30)
val labels = for (n <- items) yield tag + "=" + n
val text = labels.mkString(", ")
println("count=" + labels.length)
println("text=" + text)
}
}
object Main {
def main(args: Array[String]): Unit = {
val tag = "k"
val items = List(10, 20, 30)
val labels = for (n <- items) yield tag + "=" + n
val text = labels.mkString(", ")
println("count=" + labels.length)
println("text=" + text)
}
}
tag ← id, items ← List(10, 20, 30), labels ← List(id=10, id=20, id=30)
1object Main {2 def main(args: Array[String]): Unit = {3 val tag→ id = "id" //@tag="row", "k"4 val items→ List(10, 20, 30) = List(10, 20, 30)5 val labels→ List(id=10, id=20, id=30) = for (n <- itemsList(10, 20, 30)) yield tagid + "=" + n6 val text→ id=10, id=20, id=30 = labelsList(id=10, id=20, id=30).mkString(", ")78 println("count=" + labels.length3)9 println("text=" + textid=10, id=20, id=30)10 }11}outputcount=3 text=id=10, id=20, id=30
tag ← row, items ← List(10, 20, 30), labels ← List(row=10, row=20, row=30)
1object Main {2 def main(args: Array[String]): Unit = {3 val tag→ row = "row"4 val items→ List(10, 20, 30) = List(10, 20, 30)5 val labels→ List(row=10, row=20, row=30) = for (n <- itemsList(10, 20, 30)) yield tagrow + "=" + n6 val text→ row=10, row=20, row=30 = labelsList(row=10, row=20, row=30).mkString(", ")78 println("count=" + labels.length3)9 println("text=" + textrow=10, row=20, row=30)10 }11}outputcount=3 text=row=10, row=20, row=30
tag ← k, items ← List(10, 20, 30), labels ← List(k=10, k=20, k=30)
1object Main {2 def main(args: Array[String]): Unit = {3 val tag→ k = "k"4 val items→ List(10, 20, 30) = List(10, 20, 30)5 val labels→ List(k=10, k=20, k=30) = for (n <- itemsList(10, 20, 30)) yield tagk + "=" + n6 val text→ k=10, k=20, k=30 = labelsList(k=10, k=20, k=30).mkString(", ")78 println("count=" + labels.length3)9 println("text=" + textk=10, k=20, k=30)10 }11}outputcount=3 text=k=10, k=20, k=30