Values, Types, and Expressions
Vals and Vars
Use a fixed value and a changing variable in one small calculation.
vals-vars
A `val` is assigned once. A `var` can be reassigned when a step needs changing state.
Vals and Vars
ValsVars.scala
Replay: real traced execution (multi-file project)
object Main {
def main(args: Array[String]): Unit = {
val base = 10
var running = base
running = running + 2
val finalValue = running
println("base=" + base)
println("final=" + finalValue)
}
}
object Main {
def main(args: Array[String]): Unit = {
val base = 5
var running = base
running = running + 2
val finalValue = running
println("base=" + base)
println("final=" + finalValue)
}
}
object Main {
def main(args: Array[String]): Unit = {
val base = 20
var running = base
running = running + 2
val finalValue = running
println("base=" + base)
println("final=" + finalValue)
}
}
base ← 10, running ← 10, finalValue ← 12
1object Main {2 def main(args: Array[String]): Unit = {3 val base→ 10 = 10 //@base=5, 204 var running→ 10 = base→ 105 running→ 12 = running + 26 val finalValue→ 12 = running→ 1278 println("base=" + base10)9 println("final=" + finalValue12)10 }11}outputbase=10 final=12
base ← 5, running ← 5, finalValue ← 7
1object Main {2 def main(args: Array[String]): Unit = {3 val base→ 5 = 54 var running→ 5 = base→ 55 running→ 7 = running + 26 val finalValue→ 7 = running→ 778 println("base=" + base5)9 println("final=" + finalValue7)10 }11}outputbase=5 final=7
base ← 20, running ← 20, finalValue ← 22
1object Main {2 def main(args: Array[String]): Unit = {3 val base→ 20 = 204 var running→ 20 = base→ 205 running→ 22 = running + 26 val finalValue→ 22 = running→ 2278 println("base=" + base20)9 println("final=" + finalValue22)10 }11}outputbase=20 final=22
Follow the Values
basestarts at10.runningstarts with the same value asbase.- The next step adds
2torunning. finalValuebecomes12.- The program prints
base=10andfinal=12. | base | added | final | | --- | --- | --- | | 5 | 2 | 7 | | 10 | 2 | 12 | | 20 | 2 | 22 |
Exercise: ValsVars.scala
Reproduce final=12, then use base 5 and 20 to predict each final value.