Copy a range with table.move and read one copied value.

copied range `table.move` returns the destination table; this example immediately reads one copied value so the visible trace stays scalar.

Move Value

pick
move_value.lua
Replay: real traced execution (multi-file project)
local pick = 2
local value = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]
print("pick=" .. pick)
print("value=" .. value)
local pick = 1
local value = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]
print("pick=" .. pick)
print("value=" .. value)
local pick = 3
local value = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]
print("pick=" .. pick)
print("value=" .. value)
  1. pick ← 2, value ← green

    1local pick→ 2 = 2 --@pick=1, 32local value→ green = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]3print("pick=" .. pick2)4print("value=" .. valuegreen)
    outputpick=2
    value=green
  1. pick ← 1, value ← red

    1local pick→ 1 = 12local value→ red = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]3print("pick=" .. pick1)4print("value=" .. valuered)
    outputpick=1
    value=red
  1. pick ← 3, value ← blue

    1local pick→ 3 = 32local value→ blue = table.move({"red", "green", "blue"}, 1, 3, 1, {})[pick]3print("pick=" .. pick3)4print("value=" .. valueblue)
    outputpick=3
    value=blue