Foundations
Functions
Functions name reusable work and return values to the caller.
function call
A function call runs the named function and can use the returned value in another expression.
Functions
Functions.scala
Replay: real traced execution (multi-file project)
object Main {
def square(value: Int): Int = {
value * value
}
def main(args: Array[String]): Unit = {
val side = 5
val area = square(side)
println("side=" + side)
println("area=" + area)
}
}
object Main {
def square(value: Int): Int = {
value * value
}
def main(args: Array[String]): Unit = {
val side = 3
val area = square(side)
println("side=" + side)
println("area=" + area)
}
}
object Main {
def square(value: Int): Int = {
value * value
}
def main(args: Array[String]): Unit = {
val side = 8
val area = square(side)
println("side=" + side)
println("area=" + area)
}
}
side ← 5
6def main(args: Array[String]): Unit = {7 val side→ 5 = 5 //@side=3, 88 val area = square(side5)910 println("side=" + side)def square(value: Int): Int =
1object Main {2 def square(value5: Int): Int = {3 value5 * value4 }area ← 25
7 val side = 5 //@side=3, 88 val area→ 25 = square(side5)910 println("side=" + side5)11 println("area=" + area25)12 }13}outputside=5 area=25
side ← 3
6def main(args: Array[String]): Unit = {7 val side→ 3 = 38 val area = square(side3)910 println("side=" + side)def square(value: Int): Int =
1object Main {2 def square(value3: Int): Int = {3 value3 * value4 }area ← 9
7 val side = 38 val area→ 9 = square(side3)910 println("side=" + side3)11 println("area=" + area9)12 }13}outputside=3 area=9
side ← 8
6def main(args: Array[String]): Unit = {7 val side→ 8 = 88 val area = square(side8)910 println("side=" + side)def square(value: Int): Int =
1object Main {2 def square(value8: Int): Int = {3 value8 * value4 }area ← 64
7 val side = 88 val area→ 64 = square(side8)910 println("side=" + side8)11 println("area=" + area64)12 }13}outputside=8 area=64
What Happens
square(value)returnsvalue * value.sidestarts at5.square(side)sends5into the function.areabecomes25.- The program prints
side=5andarea=25.
Function Picture
| side | area | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |
Exercise: Functions.scala
Reproduce area=25 for side 5, then use the pinned sides 3 and 8 to predict each area.