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

side
Functions.kt
Replay: real traced execution (multi-file project)
fun square(value: Int): Int {
    return value * value
}

fun main() {
    val side = 5
    val area = square(side)

    println("side=$side")
    println("area=$area")
}
fun square(value: Int): Int {
    return value * value
}

fun main() {
    val side = 3
    val area = square(side)

    println("side=$side")
    println("area=$area")
}
fun square(value: Int): Int {
    return value * value
}

fun main() {
    val side = 8
    val area = square(side)

    println("side=$side")
    println("area=$area")
}
  1. side ← 5

    5fun main() {6    val side→ 5 = 5 //@side=3, 87    val area = square(side5)
  2. fun square(value: Int): Int

    1fun square(value5: Int): Int {2    return value5 * value3}
  3. area ← 25

    6    val side = 5 //@side=3, 87    val area→ 25 = square(side5)89    println("side=$side5")10    println("area=$area25")11}
    outputside=5
    area=25
  1. side ← 3

    5fun main() {6    val side→ 3 = 37    val area = square(side3)
  2. fun square(value: Int): Int

    1fun square(value3: Int): Int {2    return value3 * value3}
  3. area ← 9

    6    val side = 37    val area→ 9 = square(side3)89    println("side=$side3")10    println("area=$area9")11}
    outputside=3
    area=9
  1. side ← 8

    5fun main() {6    val side→ 8 = 87    val area = square(side8)
  2. fun square(value: Int): Int

    1fun square(value8: Int): Int {2    return value8 * value3}
  3. area ← 64

    6    val side = 87    val area→ 64 = square(side8)89    println("side=$side8")10    println("area=$area64")11}
    outputside=8
    area=64

Follow the Function Call

  1. side starts at 5.
  2. square(side) sends 5 into the function.
  3. The function returns 5 * 5.
  4. area becomes 25.
  5. The program prints side=5 and area=25. | side | square result | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |

Exercise: Functions.kt

Reproduce area=25 for side 5, then try side 3 and 8 and predict each area before running it.