A yield can return a value to the code that resumed the coroutine.

yielded value This model keeps the yielded value as a scalar number so replay stays stable.

Yield Value

current
yield_value.lua
Replay: real traced execution (multi-file project)
local current = 2
local yielded = current * 10
local state = "yielded"

print("current=" .. current)
print("yielded=" .. yielded)
print("state=" .. state)
local current = 1
local yielded = current * 10
local state = "yielded"

print("current=" .. current)
print("yielded=" .. yielded)
print("state=" .. state)
local current = 4
local yielded = current * 10
local state = "yielded"

print("current=" .. current)
print("yielded=" .. yielded)
print("state=" .. state)
  1. current ← 2, yielded ← 20, state ← yielded

    1local current→ 2 = 2 --@current=1, 42local yielded→ 20 = current2 * 103local state→ yielded = "yielded"45print("current=" .. current2)6print("yielded=" .. yielded20)7print("state=" .. stateyielded)
    outputcurrent=2
    yielded=20
    state=yielded
  1. current ← 1, yielded ← 10, state ← yielded

    1local current→ 1 = 12local yielded→ 10 = current1 * 103local state→ yielded = "yielded"45print("current=" .. current1)6print("yielded=" .. yielded10)7print("state=" .. stateyielded)
    outputcurrent=1
    yielded=10
    state=yielded
  1. current ← 4, yielded ← 40, state ← yielded

    1local current→ 4 = 42local yielded→ 40 = current4 * 103local state→ yielded = "yielded"45print("current=" .. current4)6print("yielded=" .. yielded40)7print("state=" .. stateyielded)
    outputcurrent=4
    yielded=40
    state=yielded