Insert values and expressions into strings.

strings A string template starts with `$` and can include simple expressions.

String Templates

name
StringsTemplates.kt
Replay: real traced execution (multi-file project)
fun main() {
    val name = "Mira"
    val lessons = 3
    val message = "$name has $lessons lessons"
    val detail = "${name.length} letters"

    println(message)
    println(detail)
}
fun main() {
    val name = "Ada"
    val lessons = 3
    val message = "$name has $lessons lessons"
    val detail = "${name.length} letters"

    println(message)
    println(detail)
}
fun main() {
    val name = "Lin"
    val lessons = 3
    val message = "$name has $lessons lessons"
    val detail = "${name.length} letters"

    println(message)
    println(detail)
}
  1. name ← Mira, lessons ← 3, message ← Mira has 3 lessons, detail ← 4 letters

    1fun main() {2    val name→ Mira = "Mira" //@name="Ada", "Lin"3    val lessons→ 3 = 34    val message→ Mira has 3 lessons = "$nameMira has $lessons3 lessons"5    val detail→ 4 letters = "${name.length4} letters"67    println(messageMira has 3 lessons)8    println(detail4 letters)9}
    outputMira has 3 lessons
    4 letters
  1. name ← Ada, lessons ← 3, message ← Ada has 3 lessons, detail ← 3 letters

    1fun main() {2    val name→ Ada = "Ada"3    val lessons→ 3 = 34    val message→ Ada has 3 lessons = "$nameAda has $lessons3 lessons"5    val detail→ 3 letters = "${name.length3} letters"67    println(messageAda has 3 lessons)8    println(detail3 letters)9}
    outputAda has 3 lessons
    3 letters
  1. name ← Lin, lessons ← 3, message ← Lin has 3 lessons, detail ← 3 letters

    1fun main() {2    val name→ Lin = "Lin"3    val lessons→ 3 = 34    val message→ Lin has 3 lessons = "$nameLin has $lessons3 lessons"5    val detail→ 3 letters = "${name.length3} letters"67    println(messageLin has 3 lessons)8    println(detail3 letters)9}
    outputLin has 3 lessons
    3 letters

Follow the Template

  1. name starts as Mira.
  2. lessons is 3.
  3. message becomes Mira has 3 lessons.
  4. detail becomes 4 letters.
  5. The program prints both lines. | name | message | detail | | --- | --- | --- | | Mira | Mira has 3 lessons | 4 letters | | Ada | Ada has 3 lessons | 3 letters | | Lin | Lin has 3 lessons | 3 letters |

Exercise: StringsTemplates.kt

Reproduce Mira has 3 lessons and 4 letters, then use the pinned names Ada and Lin to predict each detail line.