Start with a tiny Scala program that stores a name and prints a greeting.

main method A runnable Scala program can start from a `main` method inside an object.

Hello Scala

name
Hello.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Scala"
    val message = "Hello, " + name + "!"

    println(message)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Ada"
    val message = "Hello, " + name + "!"

    println(message)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val name = "Martin"
    val message = "Hello, " + name + "!"

    println(message)
  }
}
  1. name ← Scala, message ← Hello, Scala!

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Scala = "Scala" //@name="Ada", "Martin"4    val message→ Hello, Scala! = "Hello, " + nameScala + "!"56    println(messageHello, Scala!)7  }8}
    outputHello, Scala!
  1. name ← Ada, message ← Hello, Ada!

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Ada = "Ada"4    val message→ Hello, Ada! = "Hello, " + nameAda + "!"56    println(messageHello, Ada!)7  }8}
    outputHello, Ada!
  1. name ← Martin, message ← Hello, Martin!

    1object Main {2  def main(args: Array[String]): Unit = {3    val name→ Martin = "Martin"4    val message→ Hello, Martin! = "Hello, " + nameMartin + "!"56    println(messageHello, Martin!)7  }8}
    outputHello, Martin!

What Happens

  1. name starts as "Scala".
  2. The message joins "Hello, ", name, and "!".
  3. message becomes Hello, Scala!.
  4. The program prints Hello, Scala!.

Follow the Values

| name | message | | --- | --- | | Scala | Hello, Scala! | | Ada | Hello, Ada! | | Martin | Hello, Martin! |

Exercise: Hello.scala

Reproduce Hello, Scala!, then use the pinned names Ada and Martin to predict each greeting.