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.lua
Replay: real traced execution (multi-file project)
local function square(value)
  return value * value
end

local side = 5
local area = square(side)

print("side=" .. side)
print("area=" .. area)
local function square(value)
  return value * value
end

local side = 3
local area = square(side)

print("side=" .. side)
print("area=" .. area)
local function square(value)
  return value * value
end

local side = 8
local area = square(side)

print("side=" .. side)
print("area=" .. area)
  1. side ← 5

    5local side→ 5 = 5 --@side=3, 86local area = square(side5)
  2. area ← 25

    5local side = 5 --@side=3, 86local area→ 25 = square(side5)78print("side=" .. side5)9print("area=" .. area25)
    outputside=5
    area=25
  1. side ← 3

    5local side→ 3 = 36local area = square(side3)
  2. area ← 9

    5local side = 36local area→ 9 = square(side3)78print("side=" .. side3)9print("area=" .. area9)
    outputside=3
    area=9
  1. side ← 8

    5local side→ 8 = 86local area = square(side8)
  2. area ← 64

    5local side = 86local area→ 64 = square(side8)78print("side=" .. side8)9print("area=" .. area64)
    outputside=8
    area=64

What Happens

  1. square(value) returns value * value.
  2. side starts at 5.
  3. square(side) sends 5 into the function.
  4. area becomes 25.
  5. The program prints side=5 and area=25.

Function Picture

| side | area | | --- | --- | | 3 | 9 | | 5 | 25 | | 8 | 64 |

Try It

Exercise: functions.lua

Reproduce area=25 for side 5, then use the pinned sides 3 and 8 to predict each area.