Build text by placing values inside a string.

string-interpolation String interpolation lets an expression include values directly inside readable text.

String Interpolation

name
StringInterpolation.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Mira"
    val tasks = 3
    val message = s"$name has $tasks tasks"

    println("name=" + name)
    println("message=" + message)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Kai"
    val tasks = 3
    val message = s"$name has $tasks tasks"

    println("name=" + name)
    println("message=" + message)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Zoe"
    val tasks = 3
    val message = s"$name has $tasks tasks"

    println("name=" + name)
    println("message=" + message)
  }
}
  1. name ← Mira, tasks ← 3, message ← Mira has 3 tasks

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Mira = "Mira" //@name="Kai", "Zoe"4    val tasks→ 3 = 35    val message→ Mira has 3 tasks = s"$nameMira has $tasks3 tasks"67    println("name=" + nameMira)8    println("message=" + messageMira has 3 tasks)9  }10}
    outputname=Mira
    message=Mira has 3 tasks
  1. name ← Kai, tasks ← 3, message ← Kai has 3 tasks

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Kai = "Kai"4    val tasks→ 3 = 35    val message→ Kai has 3 tasks = s"$nameKai has $tasks3 tasks"67    println("name=" + nameKai)8    println("message=" + messageKai has 3 tasks)9  }10}
    outputname=Kai
    message=Kai has 3 tasks
  1. name ← Zoe, tasks ← 3, message ← Zoe has 3 tasks

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Zoe = "Zoe"4    val tasks→ 3 = 35    val message→ Zoe has 3 tasks = s"$nameZoe has $tasks3 tasks"67    println("name=" + nameZoe)8    println("message=" + messageZoe has 3 tasks)9  }10}
    outputname=Zoe
    message=Zoe has 3 tasks

Follow the Text

  1. name starts as Mira.
  2. tasks is 3.
  3. The message inserts both values.
  4. message becomes Mira has 3 tasks.
  5. The program prints name=Mira and message=Mira has 3 tasks. | name | tasks | message | | --- | --- | --- | | Mira | 3 | Mira has 3 tasks | | Kai | 3 | Kai has 3 tasks | | Zoe | 3 | Zoe has 3 tasks |

Exercise: StringInterpolation.scala

Reproduce message=Mira has 3 tasks, then use names Kai and Zoe to predict each message.