Build a small string step by step.

mutable-builder `StringBuilder` is a standard mutable helper for incremental text construction. Call `toString` when the final immutable string is ready.

String Builder Append

count
StringBuilderAppend.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val count = 3
    val builder = new StringBuilder("item")
    builder.append(":")
    builder.append(count)
    val label = builder.toString
    val length = label.length

    println("label=" + label)
    println("length=" + length)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val count = 1
    val builder = new StringBuilder("item")
    builder.append(":")
    builder.append(count)
    val label = builder.toString
    val length = label.length

    println("label=" + label)
    println("length=" + length)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val count = 5
    val builder = new StringBuilder("item")
    builder.append(":")
    builder.append(count)
    val label = builder.toString
    val length = label.length

    println("label=" + label)
    println("length=" + length)
  }
}
  1. count ← 3, builder ← item, label ← item:3, builder.toString ← item:3

    1object Main {2  def main(args: Array[String]): Unit = {3    val count→ 3 = 3 //@count=1, 54    val builder→ item = new StringBuilder("item")5    builder→ item:.append(":")6    builder→ item:3.append(count3)7    val label→ item:3 = builder.toString→ item:38    val length→ 6 = label.length→ 6910    println("label=" + labelitem:3)11    println("length=" + length6)12  }13}
    outputlabel=item:3
    length=6
  1. count ← 1, builder ← item, label ← item:1, builder.toString ← item:1

    1object Main {2  def main(args: Array[String]): Unit = {3    val count→ 1 = 14    val builder→ item = new StringBuilder("item")5    builder→ item:.append(":")6    builder→ item:1.append(count1)7    val label→ item:1 = builder.toString→ item:18    val length→ 6 = label.length→ 6910    println("label=" + labelitem:1)11    println("length=" + length6)12  }13}
    outputlabel=item:1
    length=6
  1. count ← 5, builder ← item, label ← item:5, builder.toString ← item:5

    1object Main {2  def main(args: Array[String]): Unit = {3    val count→ 5 = 54    val builder→ item = new StringBuilder("item")5    builder→ item:.append(":")6    builder→ item:5.append(count5)7    val label→ item:5 = builder.toString→ item:58    val length→ 6 = label.length→ 6910    println("label=" + labelitem:5)11    println("length=" + length6)12  }13}
    outputlabel=item:5
    length=6